在VBA中,工作簿对象能否引用在其工作表中编写的方法?
编辑以提供更多信息 基本问题: 工作簿是否可以访问VBA中某个工作表中编写的方法 现实世界的原因: 我需要在工作簿启动时运行一个方法(工作簿_Open()事件),但是,该方法有一些要求,使模块不可行:在VBA中,工作簿对象能否引用在其工作表中编写的方法?,vba,excel,Vba,Excel,编辑以提供更多信息 基本问题: 工作簿是否可以访问VBA中某个工作表中编写的方法 现实世界的原因: 我需要在工作簿启动时运行一个方法(工作簿_Open()事件),但是,该方法有一些要求,使模块不可行: 需要保持状态 需要存储数据 需要从工作簿和所述工作簿中的工作表中引用 Psuedocode示例: myWorkbook Private Sub Workbook_Open() Call myWorkbook.Sheet("worksheet1").helloWorld End Sub 工
Private Sub Workbook_Open()
Call myWorkbook.Sheet("worksheet1").helloWorld
End Sub
工作表1
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
我会把下面的代码放在一个模块中
Public Sub printHelloWorld()
MsgBox("Hello World")
End Sub
我的工作簿中的代码如下所示
Private Sub Workbook_Open()
printHelloWorld
End Sub
是的,这是可以做到的。下面两个都很好
Sub TestWithExplicitWorksheet()
wsTest.TestMessage
End Sub
Sub TestWithWorksheetsCollection()
ThisWorkbook.Worksheets("Sheet1").TestMessage
End Sub
wsTest代码:
Sub TestMessage()
Debug.Print "Success"
End Sub
工作表或多或少是一个预先声明的类模块。所以,如果你能用一个类来做,你应该能用一个工作表来做。由于工作簿对象的Worksheets集合返回(如果找到)一个工作表对象,因此您可以调用此返回对象上的方法(如果它是正确的对象并且包含被调用的子对象)。是,您可以使用工作表(也可以在工作表对象属性中更改它):
你试过了吗?你得到了什么?提示:
工作簿
没有工作表
成员。尝试从IDE中发布代码,而不是在问题框中键入。是/否问题在这个网站上特别糟糕。你可以让应用程序变得简单一点。Run(“L:\Base\LCMSACRO \MaL1.xLSM!!宏名字”,“PARAM1”,“PARAM2”),通过@芬克的礼貌,我不认为这只是一个“是”/“没有”的问题。如果答案是肯定的,那么它将有一个“如何”的方面。实际提供的代码或多或少是伪代码,我的拼写错误
Private Sub Workbook_Open()
Sheet1.printHelloWorld() ' full name is VBAProject.Sheet1.printHelloWorld()
End Sub