如何间接引用 select 中的单个单元格或范围 vba

How to use indirect reference to select a single cell or range in vba

我只需要一个用于 select 单元格的代码,但是 select 的单元格会发生变化。我在工作簿中有一个单元格,它将确定它应该是什么单元格。单元格 A1 包含应 selected 的单元格#。

在此示例中,单元格 A1 包含单词 "P25",因此我希望下面的代码引用 A1 以间接引用 P25,因此 select 单元格 P25。

我分别尝试了这两行:

Sub IndirectCellSelect()

     Sheet.Range(INDIRECT(A1)).Select
     Range(INDIRECT(A1)).Select

End Sub

我收到错误 Sub or Function is not defined,当它到达单词 INDIRECT

你可以用不同的方式来做到这一点,但是如果你想在你的 VBA 代码中使用原生的 Excel 工作表函数,你需要这样做(注意我也有调整了你引用 A1 的方式):

Application.WorksheetFunction.Indirect(Sheets(1).Range("A1"))

编辑 抱歉 - 我没有测试过这个。似乎间接函数在此上下文中不可用。相反,尝试这样的事情:

Dim rng as Range
Set rng = sheets(1).Range("A1")

sheets(1).Range(rng.text).Select

对发布的代码稍作改动即可:

Range([indirect("a1")]).Select

但我建议您尝试以下任一方法:

Sheet.Range(Sheet.Range("A1").Value).Select
Range(Range("A1")).Select

第一个更明确,建议在生产代码中使用。

Worksheets("list").Sort.SortFields.Add Key:=Range(INDIRECT("I16" & "3" & ":" & "I16" & "5002")) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With Worksheets("list").Sort
        .SetRange Range("B2:K5002")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin