it-swarm.com.ru

Как использовать косвенную ссылку, чтобы выбрать одну ячейку или диапазон в VBA

Мне нужен просто код для выбора ячейки, однако эта ячейка, чтобы выбрать изменения. У меня есть ячейка в рабочей тетради, которая будет определять, какой ячейкой она должна быть. Ячейка A1 содержит ячейку #, которая должна быть выбрана. 

В этом примере ячейка A1 содержит слово «P25», поэтому я хочу, чтобы приведенный ниже код ссылался на A1 для косвенной ссылки на ссылку на P25, поэтому выберите ячейку P25. 

Я попробовал обе эти строки отдельно:

Sub IndirectCellSelect()

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

End Sub

Я получаю ошибку Sub или Function не определена, когда доходит до Word INDIRECT 

5
Bryan

Небольшое изменение в размещенном коде работает: 

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

но я бы посоветовал попробовать один из них:

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

первое более явное и рекомендуется в рабочем коде.

3
lori_m
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
0
user6734313

Вы можете сделать это по-другому, но если вы хотите использовать встроенную функцию листа Excel в своем коде VBA, вам нужно сделать это следующим образом (обратите внимание, что я также изменил то, как вы ссылаетесь на A1):

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

Редактировать Извинения - я не проверял это. Кажется, что функция Indirect недоступна в этом контексте. Вместо этого попробуйте что-то вроде этого:

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

sheets(1).Range(rng.text).Select
0
Grade 'Eh' Bacon