【发布时间】:2015-05-02 13:53:56
【问题描述】:
出现错误:在 excel vba 中未设置对象变量或块变量(错误 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 表为空且行数为零时才会出现此错误。
谁能指导一下是什么问题?
谢谢..
【问题讨论】:
-
那么在 USERS 工作表上,您有一个名为 USERS 的表?
-
检查 ThisWorkbook.Worksheets("NEW USER") 的计算结果是否为 Nothing
-
是的,在 USERS 工作表下有一个 USERS 表。
-
else 条件下的代码工作正常: NextRecordIndex = NextRecordIndex + 1 users.ListObjects("USERS").DataBodyRange(NextRecordIndex, 1).Value = NewUser.Range("D" & 6) .Value 只有在 NextRecordIndex 为 0(表为空)时不起作用