我在Excel VBA中有一个宏给我一个错误。我在启动Excel后第一次运行它,并且它运行完美,但是当我尝试运行它时,它随后出现错误nameRow = nameRange.Row
,给出错误Object not set
,我对此感到困惑。“对象未设置”错误
Sub AssignGroups()
Dim membership As Worksheet
Dim wb As Workbook
Dim groups As Worksheet
Dim nameRow As Long
Dim fullNameString As String
Dim nameRange As Range
Dim groupRange As Range
Dim nameRange2 As Range
Dim nameIndex As Long
Dim userNameString As String
Dim barIndex As Long
Set wb = ActiveWorkbook
Set membership = Sheets("User Group Membership")
Set groups = Sheets("User Assigned to Groups")
membership.Activate
Set nameRange = membership.Range("A:A").Find("user -name")
nameRow = nameRange.Row
fullNameString = membership.Cells(nameRow, "A").Value
nameIndex = InStr(fullNameString, "user -name")
barIndex = InStr(fullNameString, "|")
userNameString = Mid(fullNameString, nameIndex + 12, ((barIndex - 4) - (nameIndex + 12)))
groups.Activate
Set nameRange2 = groups.Range("A:CH").Find(userNameString)
nameColumn = nameRange2.Column
membership.Activate
membership.Cells(nameRow, "A").Activate
Do
ActiveCell.Offset(1).Activate
If Not IsEmpty(ActiveCell.Value) Then
cellValue = ActiveCell.Value
groups.Activate
Set groupRange = groups.Range("A:CH").Find(cellValue, , , lookat:=xlWhole)
groupRow = groupRange.Row
groups.Cells(groupRow, nameColumn).Activate
ActiveCell.Value = "X"
membership.Activate
End If
Loop Until IsEmpty(ActiveCell.Value)
End Sub
难道是因为我引用ActiveCell
的方式吗?
这可能是'.Find(...)'在前面的线方法没有找到任何东西。在这种情况下,'nameRange'将被设置为'Nothing'。你可以添加一些代码来测试/处理它。 – xidgel
不是,这很可能是因为你的'.Find'方法没有找到结果并返回'Nothing',所以你有错误!在你的'Set nameRange','MsgBox membership.Range(“A:A”)。Find(“user -name”)是Nothing'之前加上这行,如果它显示'True',find方法找不到任何东西,如果它是'假'这个问题在别的地方! ;) – R3uK