VBA - 调用一个接受父对象作为变量的函数

时间:2009-11-15 16:07:11

标签: excel vba excel-vba

是否可以创建一个接受它的父对象作为变量的函数?我想用最简单的方式来说明我所说的是提供一个例子:

模块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."

2 个答案:

答案 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)。