変数とは
マクロを構築するにあたって、複雑なマクロを作る際に欠かせないのが「変数(へんすう)」です。
あまり聞き慣れない言葉なので、馴染みがないと思いますが、変数とはその名の通り「変わる数」のことです。
そのもの自体が変わるのではなく、その中に入ってるものが変わることで、より複雑なマクロを作ることができます。
変数は自分で自由に指定することができ、「Cells」や「Range」のようにVBAで既に決められているものは設定できませんが、自分で「hensu」や「i」など任意の名前を付けることが可能です。
もちろん、変数名には一定のルールがあるので、そのルール内であれば自由に設定できます。
改めて、変数の基本的な用途は「一度、文字や数字を保存(変数に入れて)して、後でその値を取り出して使う」というものです。
例:データのコピー
一つ例を出すと次のコードを見ていきましょう。
data1 = Cells(1, 1).Value
Cells(1, 5).Value = data1
このコードは次のような内容です。
- 変数「data1」に、セル「A1」の値を代入する。
- 変数「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
このコードでは次の変数が使われています。
- 「d1」「d2」
データを一時的に保存するための変数。 - 「i」
繰り返し処理の中で、行番号を管理する変数。 - 「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を学び始めた方にとって難しく感じられることが多いですが、次のポイントを押さえると理解がしやすくなります。
- データを移行するための変数「d1」「d2」
値を一時的に保存するために使用します。 - 数字を変えて使う変数「i」
繰り返し処理で行番号を管理します。 - 最終行を保有する変数「ls_rw」「rw」
最終行や次の行番号を管理します。
変数名は自由に決められるため、用途に応じて分かりやすい名前を付けるようにしましょう。
複数回利用する処理は変数で置き換えることで、コードが短くなり視認性も向上します。
ぜひ実際に手を動かしながら、変数の使い方に慣れていきましょう。
コメント