我想在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模块外部调用。
谢谢
编辑:我想我可以触发一个事件或类似的东西,但闻起来像是很脏的东西......
答案 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