VBAの変数の使い方|データ保存・カウンター・最終行管理の3パターン

VBAで複雑なマクロを作るうえで欠かせないのが変数です。変数とは「値を一時的に保存して、後で取り出して使う箱」のようなものです。変数を使いこなすことでコードが短くなり、繰り返し処理や複数シート間のデータ移行もシンプルに書けるようになります。

この記事では、変数の基本的な使い方と、実務でよく登場する3種類の変数の役割を解説します。

変数の基本的な使い方とは?

変数は「値を入れておく箱」です。セルの値を変数に保存し、後で別のセルに書き出す、というのが最も基本的な使い方です。

data1 = Cells(1, 1).Value   ' A1の値を変数に保存
Cells(1, 5).Value = data1   ' 保存した値をE1に書き出す

変数名は idata1sheet_name など自由に命名できます(VBAの予約語は使用不可)。用途がわかる名前をつけると後からコードを読みやすくなります。

実務でよく使う3種類の変数とは?

次のコードはシート1のA列・B列のデータをシート2にコピーするマクロです。3種類の変数が登場します。

Sheets(1).Select
ls_rw = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To ls_rw
    Sheets(1).Select
    d1 = Cells(i, 1).Value
    d2 = Cells(i, 2).Value

    Sheets(2).Select
    rw = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(rw, 1).Value = d1
    Cells(rw, 2).Value = d2
Next

① データを一時保存する変数(d1・d2)

シート1から読み取った値を一時的に保存し、シート2に書き込むために使います。シートを切り替える前に値を変数に入れておくことで、正確にデータを移行できます。

② カウンター変数(i)

For〜Next の中で行番号を動的に切り替えるために使います。2行目から最終行まで順番に変化することで、すべての行を自動処理します。

③ 最終行を保持する変数(ls_rw・rw)

最終行の行番号を変数に入れておくことで、同じ長いコードを何度も書かずに済みます。変数なしで書くと次のように長くなります。

' 変数なしの場合(読みにくい)
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = d1

' 変数ありの場合(すっきり)
rw = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(rw, 1).Value = d1

まとめ

  • 変数とは値を一時的に保存して後で取り出せる箱
  • データ保存用(d1・d2):シート間の転記など値を持ち越す場面で使う
  • カウンター用(i):For〜Next で行番号を順番に変化させる
  • 最終行保持用(ls_rw・rw):長い行取得コードを短く書き換えられる
  • 変数名は用途がわかる名前にするとコードが読みやすくなる

よくある質問

変数名に使えない文字はありますか?

スペース・記号(!@# など)・VBAの予約語(CellsRangeIf など)は変数名に使えません。先頭は必ず文字で始め、英数字とアンダースコアが使えます。

変数を宣言せずに使えますか?

使えますが、宣言することを推奨します。Dim 変数名 As 型 で宣言すると型の制限がかかり、意図しない値の混入やタイプミスを検出しやすくなります。

変数の値はどのタイミングでリセットされますか?

通常の Dim 変数は、そのプロシージャ(Sub)が終了するとリセットされます。値を保持し続けたい場合は Static を使います。

同じ変数を複数のSubで使うにはどうすればいいですか?

モジュールの先頭(Sub の外)で Dim を使って宣言するとモジュール内のすべての Sub から参照できます。さらに広い範囲で使いたい場合は Public を使います。

変数に入れられる値の種類(型)は何がありますか?

主なものとして、整数なら LongInteger、文字列なら String、小数なら Double、真偽値なら Boolean、オブジェクトなら WorksheetWorkbook などがあります。何でも入れたい場合は Variant 型が使えます。


動画で学びたい方へ

「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。

VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール