我在Excel上遇到VBA错误很难,有人可以帮我理解这个错误意味着什么吗?
“VBA对象变量或使用块变量未设置错误”
我的函数应该检查是否存在工作表,如果没有创建新工作表,则重命名它并返回主函数。 代码有效,但总是抛出错误..
Function GetWorksheetFromName(Name As String) As Worksheet
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
If StrComp(WS.Name, Name, vbTextCompare) = 0 Then
Set GetWorksheetFromName = WS
Exit Function
End If
Next WS
With ThisWorkbook
Set WS = Worksheets.Add(After:=Sheets(.Sheets.Count))
WS.Name = Name
End With
Set GetWorksheetFromName = WS
End Function
P.S。: this可能会有所帮助,但我仍然没有修复我的代码
答案 0 :(得分:1)
Set WS = .Worksheets.Add(After:=.Sheets(.Sheets.Count))
请注意Sheets
和Worksheets
之前的相应时段 - 您当前的代码会解决活动工作簿的Sheets集合,而不是ThisWorkbook。
答案 1 :(得分:0)
错误实际列在MSDN link
上您试图使用已设置为Nothing 的对象变量。
设置MyObject = Nothing'释放对象。
MyCount = MyObject.Count'对已发布的对象进行引用。
重新指定对象变量的引用。例如,使用新的Set语句设置对象的新引用。
Dim WS As Worksheet
Sheets("Config").Select
WS = GetWorksheetFromName(Range("B8").Value)
我的错误发生在最后一行,我错过了 SET
Set WS = GetWorksheetFromName(Range("B8").Value)
感谢Tim Williams和Scott Craner的快速帮助