对象variables或块variables未设置(错误91)在Excel中

在excel vba中出现错误:对象variables或块variables未设置(错误91)。

Sub RegisterNewUser() 'Disable screen refresh during code excution Application.ScreenUpdating = False 'Variables Dim users As Worksheet 'Variable for users table sheet Dim NewUser As Worksheet 'Variable for new user entry sheet Dim RecordIsValid As String Dim NextRecordIndex As Long 'Variable for the next available row in the users table Set users = ThisWorkbook.Worksheets("USERS") Set NewUser = ThisWorkbook.Worksheets("NEW USER") NextRecordIndex = users.ListObjects("USERS").ListRows.Count If NextRecordIndex = 0 Then users.ListObjects("USERS").DataBodyRange(NextRecordIndex, 1).Value = NewUser.Range("D" & 6).Value Else NextRecordIndex = NextRecordIndex + 1 users.ListObjects("USERS").DataBodyRange(NextRecordIndex, 1).Value = NewUser.Range("D" & 6).Value End If 

错误正是在这里:

 after the if statement: 

users.ListObjects(“USERS”).DataBodyRange(NextRecordIndex,1).Value = NewUser.Range(“D”&6).Value

else条件中的代码工作正常。 如果USERS表为空且行计数为零,则只会出现此错误。

任何人都可以请指导是什么问题?

谢谢..

如果数字或logging是0,则不能引用:

users.ListObjects("USERS").DataBodyRange

因为它不存在( DataBodyRange = Nothing

你应该先添加一个空行:

users.ListObjects("USERS").ListRows.Add

你也应该replace:

 users.ListObjects("USERS").DataBodyRange(NextRecordIndex, 1).Value 

 users.ListObjects("USERS").DataBodyRange(NextRecordIndex+1, 1).Value 

编辑:

if语句可能是多余的,下面的代码应该适用于所有情况:

 NextRecordIndex = users.ListObjects("USERS").ListRows.Count users.ListObjects("USERS").ListRows.Add users.ListObjects("USERS").DataBodyRange(NextRecordIndex + 1, 1).Value = NewUser.Range("D" & 6).Value