如何使用间接引用在vba中选择单个单元格或范围

时间:2015-07-08 17:55:40

标签: vba excel-vba reference range cell

我只需要一个用于选择单元格的代码,然而该单元格用于选择更改。我在工作簿中有一个单元格,它将识别它应该是什么单元格。单元格A1包含应选择的单元格#。

在此示例中,单元格A1包含单词“P25”,因此我希望下面的代码引用A1作为间接单元格引用到P25,从而选择单元格P25。

我分别尝试了这两行:

Sub IndirectCellSelect()

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

End Sub

我得到错误Sub或Function未定义,当它到达单词INDIRECT

3 个答案:

答案 0 :(得分:3)

对发布的代码稍作修改:

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

但我建议尝试其中任何一种:

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

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

答案 1 :(得分:0)

您可以采用不同的方式执行此操作,但如果您想在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

答案 2 :(得分:0)

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