首页 > 代码库 > VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别
VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别
在VB中,属性是可以有参数的 —— 即: VB的语法,使用参数的不一定是方法,也有可能是属性!(虽然属性的本质是方法)
例一:参数当作“索引”使用
定义一个类模块,模块名称Ints。为简化模型,使用了只读属性。
1 Private arr(3) As Integer 2 3 Public Property Get ArrValue(Index As Integer) As Integer 4 ArrValue =http://www.mamicode.com/ arr(Index) 5 End Property 6 7 ‘初始化arr(3)的值 8 Private Sub Class_Initialize() 9 arr(0) = 1 10 arr(1) = 2 11 arr(2) = 3 12 arr(3) = 4 13 End Sub
调用:
1 Sub Test() 2 Dim c As New Ints 3 Debug.Print c.ArrValue(2) ‘ArrValue是属性,并且带有参数( 索引 ) 4 ‘输出结果=3 5 End Sub
例2:可选参数
定义一个类模块,模块名称MyCal。
这个类的作用是计算两个数的和,当加数为负数时,使加数=0 (示例使用,没多少实际意义)
1 Private m As Integer 2 Private n As Integer 3 4 Public Property Get intm() As Integer 5 intm = m 6 End Property 7 8 Public Property Let intm(ByVal xvalue As Integer) 9 m = xvalue 10 End Property 11 12 13 Public Property Get intn(Optional b As Boolean = False) As Integer 14 intn = n 15 End Property 16 17 ‘加数为负数时,n赋值为0 18 Public Property Let intn(Optional b As Boolean = False, ByVal xvalue As Integer) 19 If b And n <= 0 Then 20 n = 0 21 Else 22 n = xvalue 23 End If 24 End Property 25 26 ‘计算两个数的和 27 Public Function MySum() As Integer 28 MySum = intm + intn 29 End Function
调用:
1 Sub Test() 2 Dim c As New MyCal 3 4 c.intm = 4 5 c.intn = -4 6 7 Debug.Print c.MySum ‘输出 0 8 9 c.intm = 4 10 c.intn(True) = -4 11 12 Debug.Print c.MySum ‘输出 4 13 14 End Sub
VBA中Range对象的Value就是有可选参数的属性
而Range对象的另外一个属性Value2是无参属性
Value属性参数的意义:
VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。