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 )。

例子:

  1. Set rngYourRangeVariable = Thisworkbook.Worksheets("Sheet1").Range("A1:C4")
  2. Set shtSomeSheet = Thisworkbook.Worksheet("Sheet1")
  3. Set conSomeADOconnection = New ADODB.Connection