Excel ';范围。查找';和';Range.FindNext';仅在第一场比赛中循环

Excel ';范围。查找';和';Range.FindNext';仅在第一场比赛中循环,excel,vba,loops,scope,find,Excel,Vba,Loops,Scope,Find,我正在用VBA Excel循环处理一组数据。我试图使用Range.find和Range.FindNext方法的组合来查找某个字符串。我很难找出这些语句的位置,因为我需要它们在彼此的范围内,但同时我不希望第一个Find语句每次都继续执行,因此只循环第一个匹配 Sub AssignGroups() Dim membership As Worksheet Dim wb As Workbook Dim groups As Worksheet Dim nameRow As

我正在用VBA Excel循环处理一组数据。我试图使用
Range.find
Range.FindNext
方法的组合来查找某个字符串。我很难找出这些语句的位置,因为我需要它们在彼此的范围内,但同时我不希望第一个
Find
语句每次都继续执行,因此只循环第一个匹配

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")
    Set nameRange = membership.Range("A:A").Find("user -name", Lookat:=xlPart)


    If Not nameRange Is Nothing Then

        firstAddress = nameRange.Address
        Set nameRange = membership.Range("A:A").Find("user -name", Lookat:=xlPart)
    Do

    membership.Activate
    nameRow = nameRange.Row
    MsgBox (nameRow)
    fullNameString = membership.Cells(nameRow, "A").Value
    MsgBox (fullNameString)
    nameIndex = InStr(fullNameString, "user -name")
    barIndex = InStr(fullNameString, "|")
    MsgBox (nameIndex)
    MsgBox (barIndex)
    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)

    Set nameRange = membership.Range("A:A").FindNext(ActiveCell)

    Loop While Not nameRange Is Nothing And nameRange.Address <> firstAddress
    End If


End Sub  
子组()
将会员资格作为工作表
将wb设置为工作簿
将组设置为工作表
暗淡的名字行一样长
将fullNameString设置为字符串
将名称范围变暗为范围
Dim groupRange作为范围
Dim NAME范围2作为范围
将名称索引变长
Dim userNameString作为字符串
暗淡的巴林德克斯
设置wb=ActiveWorkbook
设置成员资格=工作表(“用户组成员资格”)
设置组=图纸(“用户指定给组”)
Set nameRange=membership.Range(“A:A”).Find(“用户名”,Lookat:=xlPart)
如果不是nameRange,那么就什么都不是了
firstAddress=nameRange.Address
Set nameRange=membership.Range(“A:A”).Find(“用户名”,Lookat:=xlPart)
做
会员资格。激活
nameRow=nameRange.Row
MsgBox(名称行)
fullNameString=membership.Cells(nameRow,“A”).Value
MsgBox(完整名称字符串)
nameIndex=InStr(完整名称字符串,“用户名”)
barIndex=InStr(完整名称字符串“|”)
MsgBox(名称索引)
MsgBox(barIndex)
userNameString=Mid(fullNameString,nameIndex+12,((barIndex-4)-(nameIndex+12)))
组,激活
Set nameRange2=groups.Range(“A:CH”).Find(userNameString)
nameColumn=nameRange2.Column
会员资格。激活
成员资格。单元格(名称行,“A”)。激活
做
ActiveCell.Offset(1).激活
如果不是IsEmpty(ActiveCell.Value),则
cellValue=ActiveCell.Value
组,激活
Set groupRange=groups.Range(“A:CH”).Find(cellValue,,Lookat:=xlother)
groupRow=groupRange.Row
groups.Cells(groupRow,nameColumn).激活
ActiveCell.Value=“X”
会员资格。激活
如果结束
循环直到IsEmpty(ActiveCell.Value)
Set-nameRange=membership.Range(“A:A”).FindNext(ActiveCell)
非nameRange时循环为Nothing和nameRange.Address firstAddress
如果结束
端接头
我如何放置这些语句,使其在所有匹配项上循环,一个接一个