一次选择每个范围Vba

一次选择每个范围Vba,vba,excel,Vba,Excel,如何编写循环代码或使其同时选择所有可能的项。“In”应位于选定范围的第一位,并向下延伸至最晚的第一位,并将类似范围复制到列表中。 谢谢你的反馈 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", Ra

如何编写循环代码或使其同时选择所有可能的项。“In”应位于选定范围的第一位,并向下延伸至最晚的第一位,并将类似范围复制到列表中。 谢谢你的反馈

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

到目前为止做得不错。一点建议:Find方法返回一个range对象,使用它可以赋予您一些优势

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
Private-Sub-SelectBetween()
Dim firstInCell、tmpInCell、firstLateCell、tmpLateCell、copyRange作为范围
上错下错
设置firstInCell=Range(“A:A”)。查找(“In”,Range(“A1”))
设置firstLateCell=Range(“A:A”)。查找(“Late”,Range(“A1”))
设置tmpInCell=firstInCell
设置tmpLateCell=firstLateCell
设置copyRange=范围(tmpInCell、tmpLateCell)
做
设置tmpInCell=Range(“A:A”)。查找(“In”,tmpInCell)
设置tmpLateCell=Range(“A:A”)。查找(“Late”,tmpInCell)
设置copyRange=Union(copyRange,Range(tmpInCell,tmpLateCell))
在tmpInCell.Address firstInCell.Address时循环
复制范围,复制
出口接头
错误:
MsgBox“未指定单元格”
端接头

逻辑:找到第一个目标并将其存储到
firstInCell
firstLateCell
中。我建立了一个
copyRange
来保存所有匹配的范围。
Find
函数有一个功能,如果没有找到任何内容,它将滚动回到开始,因此我可以检查结果以确定循环是否完成。

任何回答此问题的尝试都需要一些猜测。如果单元格A2和A10都包含“In”,单元格A8和A16都包含“Late”,请编辑您的问题以使其更清晰。您想选择A2:A8、A2:A16、A8:A10、A10:A16(即A2:A16)?谢谢您提供的详细答案。另一方面,如何实现delete来删除行而不存储任何数据?感谢所有帮助如果您有行号,您可以通过
行(i)将其删除。删除
。删除多行的最佳方法是先将它们联合起来,然后立即删除它们。否则一个一个的删除会花费很多时间。我明白了。再次感谢你,非常感谢你的帮助。