VBA对象变量或With块变量未设置错误
问题描述:
我在Excel上遇到VBA错误很难,有人可以帮我理解这个错误的含义吗?VBA对象变量或With块变量未设置错误
“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
PS:this可能有帮助,但我仍然没有固定的我的代码
答
错误实际上是上市MSDN link
您试图使用已被设置为Nothing的对象变量。
设置为MyObject =无 “发行对象。
mycount的= MyObject.Count “制作到释放对象的引用。
重新指定对象变量的引用。例如,使用新的Set语句来设置对该对象的新引用。
Dim WS As Worksheet
Sheets("Config").Select
WS = GetWorksheetFromName(Range("B8").Value)
我的错误是在最后一行,我错过了SET
Set WS = GetWorksheetFromName(Range("B8").Value)
谢谢蒂姆·威廉姆斯和斯科特·克拉纳您快速帮助
什么是不工作?对于我来说,使用GetWorksheetFromName(“ABC”):.Range(“A1”)= 123:End With'。首先传递它创建新的工作表,第二次传递它使用相同的工作表。 – Jeeped
代码有效,但是会抛出这个错误 – miguelmpn
你打算怎么调用它? –