是否可以在函数中返回工作表类型变量?

时间:2019-05-15 17:39:56

标签: excel vba

在我正在开发的这个项目中,我创建了许多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

2 个答案:

答案 0 :(得分:1)

是的,您可以将它们声明为全局变量。

Public ws1 As Worksheet

然后在应用程序的应用程序加载事件期间实例化全局变量

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时,都将调用这些相同的函数。