VBA – 返回对WorkBook的引用
我想调用一个返回工作簿或对该工作簿的引用的函数。 不过,我无法设置值从函数返回的工作簿“wb”。
Public Sub TestScript() Dim wb As Workbook wb = GetWorkBook() End Sub Function GetWorkBook() As Workbook Dim db2 As Workbook Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") Dim xlWB As Excel.Workbook For Each xlWB In xlApp.Workbooks If xlWB.Name = "Test.XLSX" Then Set db2 = xlWB End If Next xlWB Set xlApp = Nothing Set xlWB = Nothing GetWorkBook = db2 End Function
得到:
运行时错误91:对象variables或未设置块variables
你忘了两次使用set
语句:
Public Sub TestScript() Dim wb As Workbook Set wb = GetWorkBook() End Sub Function GetWorkBook() As Workbook Dim db2 As Workbook Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") Dim xlWB As Excel.Workbook For Each xlWB In xlApp.Workbooks If xlWB.Name = "Test.XLSX" Then Set db2 = xlWB End If Next xlWB Set xlApp = Nothing Set xlWB = Nothing Set GetWorkBook = db2 End Function
每当你分配一个对象到一个variables(从而引用它),那么你必须使用set
语句( https://stackoverflow.com/a/349636/1153513 )。
例子:
-
Set rngYourRangeVariable = Thisworkbook.Worksheets("Sheet1").Range("A1:C4")
-
Set shtSomeSheet = Thisworkbook.Worksheet("Sheet1")
-
Set conSomeADOconnection = New ADODB.Connection