web-dev-qa-db-ja.com

間接参照を使用してvbaで単一のセルまたは範囲を選択する方法

セルを選択するためのコードが必要ですが、そのセルは変更を選択します。ワークブックにセルがあり、それがどのセルであるかを識別します。セルA1には、選択する必要のあるセル番号が含まれています。

この例では、セルA1に単語「P25」が含まれているため、以下のコードで間接セルrefのA1を参照してP25を参照し、セルP25を選択します。

私はこれらの両方の行を別々に試しました:

Sub IndirectCellSelect()

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

End Sub

間接的にWordに到達すると、SubまたはFunction is not definedというエラーが表示されます

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

これは別の方法で行うこともできますが、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
0