VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别

Posted 业余爱好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别相关的知识,希望对你有一定的参考价值。

在VB中,属性是可以有参数的,而VBA中属性使用参数非常常见。比如最常用的:Worksheet.Range("A1:A10")

 VB的语法,使用参数的不一定是方法,也有可能是属性!(虽然属性的本质是方法)

例一:参数当作“索引”使用

定义一个类模块,模块名称Ints。为简化模型,使用了只读属性。

 1 Private arr(3) As Integer
 2 
 3 Public Property Get ArrValue(Index As Integer) As Integer
 4     ArrValue = 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属性的一点区别的主要内容,如果未能解决你的问题,请参考以下文章

请问,编程语言中,(VB或者说VBA,),宏是啥概念啊?宏做出来一个是类模块,但是类模块

让 VBA 类模块的属性 - 是不是可以有多个参数? [复制]

Office 类模块(对象)工厂的 VBA

VB/VBA worksheet_selectchange事件_参数传递

vba三个问题,如何判断target属于范围?

VB6/VBA中跟踪鼠标移出窗体控件事件(类模块成员函数指针CHooker类应用)