是否可以创建一个接受它的父对象作为变量的函数?我想用最简单的方式来说明我所说的是提供一个例子:
模块1代码:
Function IsProduct() as Boolean
IsProduct = (vartype(Parent.Value) <> vbEmpty)
End Function
' "Parent" in this case would be a Range '
模块2代码:
Dim myRng as Range
If myRng.IsProduct Then Debug.Print "'Tis a product, sir."
答案 0 :(得分:1)
我没有完全理解你的问题;据我所知,你不能用VBA中的方法扩展现有的类。也许你想要这样的东西?
第1单元:
Function IsProduct(parent As Object) as Boolean
IsProduct = (vartype(parent.Value) <> vbEmpty)
End Function
' This can take a Range as well as other objects as a parameter
第2单元:
Dim myRng as Range
If IsProduct(myRng) Then Debug.Print "'Tis a product, sir."
答案 1 :(得分:1)
您可以在类中使用Me关键字来引用该类。像
IsProduct = IsEmpty(Me.Value)
您可以在VBA中模拟扩展本机类。创建一个名为cRange的类,并为其提供两个属性:Range和IsProduct
Private mclsRange As Range
Private Sub Class_Terminate()
Set mclsRange = Nothing
End Sub
Public Property Get Range() As Range
Set Range = mclsRange
End Property
Public Property Set Range(clsRange As Range)
Set mclsRange = clsRange
End Property
Public Property Get IsProduct() As Boolean
IsProduct = IsEmpty(Me.Range.Value)
End Property
现在,您可以使用Range属性获取本机Range对象的所有内置属性和方法,并创建所需的任何其他属性(如IsProduct)。