如何将循环编码或一次性选择所有可能性。 “在”中应该首先在选定的范围内,并向下延伸到第一个晚期,并在列表中复制相似的范围。 感谢您的反馈
SelectBetween()
Dim findrow As Long, findrow2 As Long
On Error GoTo Err
findrow = Range("A:A").Find("In", Range("A1")).Row
findrow2 = Range("A:A").Find("Late", Range("A" & findrow)).row
Range("A" & findrow & ":A" & findrow2).copy
Exit Sub
Err:
MsgBox "Cells unspecified"
End Sub
答案 0 :(得分:1)
到目前为止很好的尝试。一点建议:Find方法返回一个范围对象,使用它可以给你一些好处。
Private Sub SelectBetween()
Dim firstInCell, tmpInCell, firstLateCell, tmpLateCell, copyRange As Range
On Error GoTo Err
Set firstInCell = Range("A:A").Find("In", Range("A1"))
Set firstLateCell = Range("A:A").Find("Late", Range("A1"))
Set tmpInCell = firstInCell
Set tmpLateCell = firstLateCell
Set copyRange = Range(tmpInCell, tmpLateCell)
Do
Set tmpInCell = Range("A:A").Find("In", tmpInCell)
Set tmpLateCell = Range("A:A").Find("Late", tmpInCell)
Set copyRange = Union(copyRange, Range(tmpInCell, tmpLateCell))
Loop While tmpInCell.Address <> firstInCell.Address
copyRange.Copy
Exit Sub
Err:
MsgBox "Cells unspecified"
End Sub
逻辑:找到第一个目标并将其存储到firstInCell
和firstLateCell
中。我构建了一个copyRange
来保存所有匹配的范围。 Find
函数有一个功能,如果没有找到任何内容,它将回滚到开头,因此我可以检查结果以确定循环是否已完成。