Excel ';范围。查找';和';Range.FindNext';仅在第一场比赛中循环
我正在用VBA Excel循环处理一组数据。我试图使用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
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
如果结束
端接头
我如何放置这些语句,使其在所有匹配项上循环,一个接一个