VBA对象变量或With块变量未设置错误

时间:2016-03-15 17:23:11

标签: excel vba exception

我在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可能会有所帮助,但我仍然没有修复我的代码

2 个答案:

答案 0 :(得分:1)

Set WS = .Worksheets.Add(After:=.Sheets(.Sheets.Count)) 

请注意SheetsWorksheets之前的相应时段 - 您当前的代码会解决活动工作簿的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的快速帮助