Vbaでセルを変数として使用するにはどうすればよいですか?
範囲または単一セルを変数として使用するには、まずその変数を範囲データ型で宣言する必要があります。それが完了したら、range オブジェクトを使用して、1 つのセルからこの変数までの範囲を指定する必要があります。これにより、範囲で使用できるすべてのプロパティとメソッドにアクセスできるようになります。
- キーワード「Dim」を使用して変数名を入力します。
- キーワードをRangeとして宣言します。
- 変数名を入力します。
- 変数に代入する範囲を指定します。
選択範囲を範囲変数に設定します
変数に対して選択した範囲を使用し、その変数を使用してプロパティやメソッドにアクセスすることもできます。次のコードを考えてみましょう。
Sub vba_range_variable() Dim rng As Range Set rng = Selection Selection.Clear End Sub
ただし、範囲以外のオブジェクトを選択すると、VBA がエラーを表示することに注意する必要があります。
ただし、これは範囲を何度も変更する必要がない動的な方法でもあります。
変数を使用して範囲をコピーする
変数を範囲として宣言すると、その変数名を使用してその範囲をコピーすることもできます。範囲 A1:A10 を rng 変数として宣言したとします (上記の例)。次のコードを使用してコピーできます。
Sub vba_range_variable() Dim rng As Range Set rng = Range("A1:A10") rng.Copy End Sub
関数内で範囲変数を使用する
マクロを作成するときに、範囲変数を使用して関数内の範囲を参照することもできます。次のコードを考えてみましょう。
Sub vba_range_variable() Dim iNames As Variant Dim rng As Range Set rng = Range("A1:A10") Range("B1") = WorksheetFunction.Max(rng) End Sub
A1:A10の範囲の値を取り、変数「rng」を使用する必要があるため、最大値の変数を使用して出力しました。
関連: VBA で WorksheetFunction を使用する方法
行と列の数を数える
前に述べたように、変数を範囲として指定すると、すべてのプロパティとアクセス メソッドも取得されます。行と列をカウントしたい場合を想像してください。使用できるコードは次のとおりです。
Sub vba_range_variable() Dim rng As Range Set rng = Range("A1:A10") MsgBox "This range has " & _ rng.Rows.Count & " row(s) and " & _ rng.Columns.Count & " coulmn(s)." End Sub
このコードを実行すると、変数で指定した範囲の行数と列数を示すメッセージが表示されます。
範囲を含むワークシートの定義
上記のすべての例では、ワークシートについて言及せずに範囲を使用しているため、このコードを実行すると、VBA は常にアクティブ シート内の範囲を参照します。ただし、特定のワークシートを参照したい場合は、範囲を指定してワークシート オブジェクトを使用する必要があります。
Dim rng As Range Set rng = Worksheets("Sheet1").Range("A1:A10")
関連するチュートリアル
- VBA でグローバル (パブリック) 変数を宣言する
- VBA の明示的なオプション ステートメント
- メッセージボックス内の変数
- 定数VBA
- Dim VBA 命令
- VBA 変数 (宣言、データ型、スコープ)