在我正在开发的这个项目中,我创建了许多Sub,它们都使用相同的三个工作簿。但是,有没有更好的方法来使用这些工作簿的工作表,而不必每次创建新的Sub时都将它们记下来?我尝试通过函数返回它,但是它不起作用。
Function defineWorksheet() As Worksheet
Dim wk_Base_18 As Excel.Workbook
Dim ws_18 As Excel.Worksheet
Set wk_Base_18 = Excel.Workbooks("2019.01.03.xlsb")
Set ws_18 = wk_Base_18.Worksheets("Planilha1")
ws_18
End Function
错误91
答案 0 :(得分:1)
是的,您可以将它们声明为全局变量。
Public ws1 As Worksheet
然后在excel应用程序的应用程序加载事件期间实例化全局变量
Private Sub Workbook_Open()
Set ws1 = ThisWorkbook.Sheets("YourSheetName")
End Sub
现在,您可以通过变量来引用它,例如。
Dim x as Integer: x = ws1.Range("B5")
答案 1 :(得分:0)
一般的想法是声音,您只需要为每个对象创建一个函数:
Function wk_Base_18() as workbook
Set wk_Base_18 = Excel.Workbooks("2019.01.03.xlsb")
End Function
Function ws_18() as worksheet
Set ws_18 = wk_Base_18.Worksheets("Planilha1")
End Function
然后,每当您使用变量ws_18或wk_Base_18时,都将调用这些相同的函数。