如何间接引用 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
我只需要一个用于 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