【Excelマクロ】変数

Excelマクロ

変数とは

マクロを構築するにあたって、複雑なマクロを作る際に欠かせないのが「変数(へんすう)」です。

あまり聞き慣れない言葉なので、馴染みがないと思いますが、変数とはその名の通り「変わる数」のことです。

そのもの自体が変わるのではなく、その中に入ってるものが変わることで、より複雑なマクロを作ることができます。

変数は自分で自由に指定することができ、「Cells」や「Range」のようにVBAで既に決められているものは設定できませんが、自分で「hensu」や「i」など任意の名前を付けることが可能です。

もちろん、変数名には一定のルールがあるので、そのルール内であれば自由に設定できます。

改めて、変数の基本的な用途は「一度、文字や数字を保存(変数に入れて)して、後でその値を取り出して使う」というものです。

例:データのコピー

一つ例を出すと次のコードを見ていきましょう。

data1 = Cells(1, 1).Value
Cells(1, 5).Value = data1

このコードは次のような内容です。

  1. 変数「data1」に、セル「A1」の値を代入する。
  2. 変数「data1」に保存した値をセル「E1」に取り出して代入する。

このように、データを直接コピーする代わりに変数を介して処理するのが基本的な使い方です。

実務的な例

さらに具体的な例を見ていきます。

次のコードは、シート1のA列・B列のデータを、シート2のA列・B列にコピーするマクロです。

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

このコードでは次の変数が使われています。

  1. 「d1」「d2」
    データを一時的に保存するための変数。
  2. 「i」
    繰り返し処理の中で、行番号を管理する変数。
  3. 「ls_rw」「rw」
    シート内の最終行を管理するための変数。

このように変数と一言で言っても、さまざまな役割をする変数になっています。

各変数の役割

① データを移行するための変数「d1」「d2」

「d1」「d2」は、それぞれシート1のA列・B列のデータを一時的に保存し、シート2のA列・B列に書き込むために使用します。

② 数字を変えて使う変数「i」

「i」は、繰り返し処理(For〜Next)の中で、行番号を動的に切り替えるために使います。
例えば、最終行が10の場合、「i」は2から10まで順に変化し、それぞれの行に対して処理を行います。

③ 最終行を保有する変数「ls_rw」「rw」

「ls_rw」はシート1の最終行、「rw」はシート2の最終行の次の行を表します。

このように最終行の情報を変数として保存しておくことで、何度も長いコードを書かずに、変数を書くだけで済むので、コードが簡潔になります。

もし、「rw」の変数を使わない場合には、「rw」の部分を正確に記載すると、次のように長くなってしまうので、コードが長くなり、見づらくなり、コードの確認がしづらくなります。

Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = d1

まとめ

変数は、VBAを学び始めた方にとって難しく感じられることが多いですが、次のポイントを押さえると理解がしやすくなります。

  1. データを移行するための変数「d1」「d2」
    値を一時的に保存するために使用します。
  2. 数字を変えて使う変数「i」
    繰り返し処理で行番号を管理します。
  3. 最終行を保有する変数「ls_rw」「rw」
    最終行や次の行番号を管理します。

変数名は自由に決められるため、用途に応じて分かりやすい名前を付けるようにしましょう。

複数回利用する処理は変数で置き換えることで、コードが短くなり視認性も向上します。

ぜひ実際に手を動かしながら、変数の使い方に慣れていきましょう。

コメント