向Sheet对象添加自定义方法

时间:2015-10-22 19:54:36

标签: vba excel-vba excel

我想在Excel工作表中添加自定义方法:

Option Explicit
Implements IReadable

'Get the fields as defined on the sheet
Public Function getFields() As Variant
    'test 
    Debug.Print Me.Name
End Function

我想明确地将它们添加到工作表中,并从工作表外部调用它们 在添加了一堆装饰器和实用程序类之后,模块的数量已经开始增加(VBA中没有包/子文件夹,我知道(?))。
在表单内部抽象与表单相关的逻辑是有意义的,而不是为它创建另一个自定义模块。

有没有办法让我可以这样做:

dim oSheet as IReadable
set oSheet = thisworkbook.sheets("someSheet") 
oSheet.getFields()

这不起作用,因为Excel工作表对象本身不公开此方法。然而,我真的想添加我自己的公共方法,我可以从Sheet模块外部调用。

谢谢

编辑:我想我可以触发一个事件或类似的东西,但闻起来像是很脏的东西......

1 个答案:

答案 0 :(得分:1)

您的工作表模块代码不对。它应该是:

Implements IReadable

'Get the fields as defined on the sheet
Private Function IReadable_getFields() As Variant
    'test
    Debug.Print Me.Name

End Function

然后,只要IReadable接口类将其Instancing设置为“Public - Not creatable' (它不能是私人的),你可以使用:

Dim oSheet                As IReadable
Set oSheet = ThisWorkbook.Sheets("Sheet1")
oSheet.getFields