VBA – 调用一个接受父对象作为variables的函数

是否有可能创build一个函数接受它的父对象作为variables? 我想最简单的方法来说明我在说什么是提供一个例子:

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

我没有完全理解你的问题。 据我所知你不能用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." 

你可以在类中使用Me关键字来引用类。 喜欢

 IsProduct = IsEmpty(Me.Value) 

您可以模拟在VBA中扩展本机类。 创build一个名为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对象的所有内置属性和方法,并创build任何其他属性(如IsProduct)。