运行时错误“91”; 对象variables或未设置块variables

我得到以下错误:

“运行时错误'91';对象variables或块variables未设置”

从方法“CreateArray()”中写入的特定代码中,当从NewEntry()方法中调用时:

  With NameStart n = Range(.Offset(1, 0), .End(xlDown)).Rows.Count End With 

原始代码:

 Sub CreateArray() With NameStart n = Range(.Offset(1, 0), .End(xlDown)).Rows.Count End With ReDim PhoneName(n) For i = 1 To n PhoneName(i) = NameStart.Offset(i, 0) PhoneNumber(i) = NumStart.Offset(i, 0) Next i End Sub 

下一个方法:

 Sub NewEntry() Application.ScreenUpdating = False Worksheets("Phone Data").Activate NewName = InputBox("Please enter the new entry name using the " _ & "following format: Last, First", "New Name", "Smith, John") If NewName = "" Then MsgBox "Please enter a name." Exit Sub End If NewNumber = InputBox("Please enter the 10-digit phone number for " _ & NewName & " usin the following format: 1234567890", _ "New Number", 1234567890) If NewNumber / 10 ^ 10 < 0.1 Or NewNumber / 10 ^ 10 > 1 Then MsgBox "Please enter a 10-digit number." Exit Sub End If Call CreateArray For i = 1 To n If PhoneName(i) = NewName Then MsgBox "There is already an entry for this person in the " _ & "phone book." Exit Sub End If Next i NameStart.Offset(n, 0).Value = NewName NumStart.Offset(n, 0).Value = NewNumber Range(NameStart, NumStart.Offset(n, 0)).Select Selection.Sort Key1:=NameStart, Order1:=xlAscending Worksheets("Phonebook Welcome").Activate Application.ScreenUpdating = True MsgBox NewName & " has been added to the phone book." End Sub 

variables声明:

 Public i As Integer Public n As Integer Private PhoneName() As String Private PhoneNumber() As Double Public NewName As String Public NewNumber As Double Public NameStart As Range Public NumStart As Range 

声明Public NameStart As Range实际上并不使NameStart引用任何工作表上的实际范围。 在使用可以在NameStart上调用的方法NameStart ,需要将它设置为引用实际的范围,如下所示:

Set NameStart = Worksheets("Sheet1").Range("A1:D10")

如果您碰巧定义了名为“NameStart”的命名范围,那么您仍然需要将其链接到NameStartvariables:

Set NameStart = Range("NameStart")

如果你不这样做,那么NameStart没有链接到任何东西,试图调用它的方法将产生运行时错误