【问题标题】:Declare a Range relative to the Active Cell with VBA使用 VBA 声明相对于活动单元格的范围
【发布时间】:2014-10-14 01:46:40
【问题描述】:

我需要声明一个相对于活动单元格的范围对象。问题是,每次宏运行时我要选择的行数和列数都不一样。

例如,我有两个变量:numRowsnumCols

我想选择一个左上角有 ActiveCell 的范围,手上有 ActiveCell.Row + NumRows 行和右下角有 ActiveCell.Column + NumCols 列的单元格(然后我打算复制这些数据到一个数组来加速我的宏)。

关于如何做到这一点的任何建议?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    Range 类上有一个.Offset property,可以让你做你需要的事情

    ActiveCell.Offset(numRows, numCols)

    跟进评论:

    Dim newRange as Range
    Set newRange = Range(ActiveCell, ActiveCell.Offset(numRows, numCols))
    

    您可以通过MsgBox newRange.Address进行验证

    here's how to assign this range to an array

    【讨论】:

      【解决方案2】:

      像这样:

      Dim rng as Range
      Set rng = ActiveCell.Resize(numRows, numCols)
      

      然后将该范围的内容读取到一个数组中:

      Dim arr As Variant
      arr = rng.Value
      'arr is now a two-dimensional array of size (numRows, numCols)
      

      或者,选择范围(我认为这不是您真正想要的,但您在问题中要求这样做)。

      rng.Select
      

      【讨论】:

      • ++ 我喜欢替代方案,我相信这是实现 OP 在这种情况下要求的更好方法。
      猜你喜欢
      • 1970-01-01
      • 2013-09-19
      • 2017-03-30
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      相关资源
      最近更新 更多