对象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