【问题标题】:Select multiple ranges with VBA使用 VBA 选择多个范围
【发布时间】:2019-10-08 22:30:40
【问题描述】:

我需要在工作表中选择多个范围以在其上运行各种 VBA 代码。范围将始终从第 84 行开始,但结束取决于数据向下走多远。我一直在使用这样的代码分别选择这些范围:

Sub SelectRange()
Dim LastRow As Integer
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Range("A84:B" & LastRow).Select
End Sub

效果很好,但我不知道如何一次选择多个范围。我已经尝试了所有我能想到的:

  • 范围(“A84:B”、“D84:E”、“H84:J”和 LastRow)。选择
  • 范围("A84:B,D84:E,H84:J" & LastRow).Select
  • Range("A84:B & LastRow,D84:E & LastRow,H84:J & LastRow").Select

没有任何作用。运行其中任何一个时都会出现运行时错误。

【问题讨论】:

  • Range("A84:B" & LastRow & ",D84:E" & LastRow & ",H84:J" & LastRow).Select
  • Range( Replace("A84:B<r>,D84:E<r>,H84:J<r>", "<r>", LastRow) ).Select

标签: excel vba


【解决方案1】:

使用联合:

Dim rng as Range
With ActiveSheet
    set rng = Union(.Range("A84:B" & LastRow),.Range("D84:E" & LastRow),.Range("H84:J" & LastRow))
End With
rng.select

但是,如果您打算在该范围内做某事,那么请跳过 .Select 并做想做的事,即 rng.copy

【讨论】:

    【解决方案2】:

    将您停止使用的范围地址放在Range 对象的第一个参数中。

    例如,Range("A:A,D:D").Select 将选择 A 列和 D 列。

    你的情况,你可以试试:

    Dim str As String, LastRow As Integer
    
    LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    str = "A84:B" & LastRow & ",D84:E" & LastRow & ",H84:J" & LastRow
    Range(str).Select
    

    【讨论】:

      【解决方案3】:

      Range("A84:B & LastRow & "," & "D84:E & LastRow & "," & "H84:J & LastRow").Select

      【讨论】:

      • 这个答案返回编译错误。可能是由于双引号放错了。尝试修改为Range("A84:B" & LastRow & "," & "D84:E" & LastRow & "," & "H84:J" & LastRow).Select
      猜你喜欢
      • 2014-03-04
      • 1970-01-01
      • 2021-05-22
      • 2017-07-18
      • 1970-01-01
      • 2013-05-24
      • 2019-05-10
      • 2019-02-12
      • 2014-12-17
      相关资源
      最近更新 更多