修改以提供更多信息。
基本问题:
工作簿是否可以访问在VBA中的一个工作表中编写的方法?
真实世界的原因:
我需要在工作簿启动时运行一个方法(Workbook_Open()事件)但是,该方法有一些要求使模块不可行:
Psuedocode示例:
myWorkbook
Private Sub Workbook_Open()
Call myWorkbook.Sheet("worksheet1").helloWorld
End Sub
worksheet1
Public Sub printHelloWorld()
'Store "Hello World" so we can use later, this method needs to maintain state
Dim helloWorld As String
Set helloWorld = "Hello World"
MsgBox(helloWorld)
End Sub
答案 0 :(得分:0)
我会把下面的代码放在一个模块中
Public Sub printHelloWorld()
MsgBox("Hello World")
End Sub
myWorkBook中的代码看起来像
Private Sub Workbook_Open()
printHelloWorld
End Sub
答案 1 :(得分:0)
是的,这可以做到。以下两种方法都可以。
Sub TestWithExplicitWorksheet()
wsTest.TestMessage
End Sub
Sub TestWithWorksheetsCollection()
ThisWorkbook.Worksheets("Sheet1").TestMessage
End Sub
wsTest代码:
Sub TestMessage()
Debug.Print "Success"
End Sub
工作表或多或少是预先声明的类模块。因此,如果您可以使用类来完成它,您应该可以使用工作表来完成它。由于Workbook对象的Worksheets集合返回(如果找到)一个Worksheet对象,您可以在此返回的对象上调用该方法(如果它是正确的对象并包含被调用的子对象)。
答案 2 :(得分:0)
是的,您可以使用工作表CodeName
(您也可以在工作表对象属性中更改它):
Private Sub Workbook_Open()
Sheet1.printHelloWorld() ' full name is VBAProject.Sheet1.printHelloWorld()
End Sub