【问题标题】:Define range based on the value of another cell根据另一个单元格的值定义范围
【发布时间】:2015-09-22 12:48:40
【问题描述】:

是否可以根据单元格中给定的值在 VBA 中定义范围?

例如,我有一个包含四列和不断变化的行数的数据集。我有单元格F2 中的行数。假设单元格F2表示行数是385,那么我可以Range("A1:D385").Select,但是我希望最后一个单元格的选择依赖于单元格F2

所以如果我将F2 更改为50,那么下次我运行宏时,A1:D50 将被选中,但由于我是 VBA 新手,所以我无法弄清楚。

【问题讨论】:

  • 试试Range("A1:D" & Range("F2").Value2).Select。请参阅How to avoid using Select in Excel VBA macros,了解摆脱依赖 select 和 activate 来实现目标的方法。
  • @user3290799 为什么不使用Value2?它更快。
  • 你是对的@Rory。没关系。

标签: vba excel


【解决方案1】:

最合适的方法是这样

Sub getRng()
Dim Cval As Variant
Dim Rng1 As Range
Cval = ActiveSheet.Range("F2").Value
Set Rng1 = ActiveSheet.Range("A1:D" & Cval)
End Sub

这会将Rng1 设置为您稍后可以在另一个函数中使用的对象

比如

Rng1.Select

Rng1.Copy

【讨论】:

    【解决方案2】:

    这就是你要找的:

    Dim lastRow As Integer
    
    With ThisWorkbook.Sheets(1)
        lastRow = .Cells(.Rows.Count, "F").End(xlUp).row
        .range("A1:D" & lastRow).Select
    End With
    

    代码从下到上查找 F 列中的第一个非空单元格。类似于选择 F 列中的最后一个单元格并按 Ctrl + up-arrow

    【讨论】:

    • 谢谢,但最好总是解释你的答案,而不仅仅是转储代码。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2015-10-11
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多