我想调用一个返回工作簿或对该工作簿的引用的函数.但是,我无法使用函数返回的工作簿设置值'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
Run Code Online (Sandbox Code Playgroud)
得到:
运行时错误91:未设置对象变量或块变量
你忘了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
Run Code Online (Sandbox Code Playgroud)
无论何时将对象分配给变量(从而引用它),您都必须使用该set语句(/sf/answers/24474551/).
例子:
Set rngYourRangeVariable = Thisworkbook.Worksheets("Sheet1").Range("A1:C4")Set shtSomeSheet = Thisworkbook.Worksheet("Sheet1")Set conSomeADOconnection = New ADODB.Connection