VBAでの変数の使用と繰り返しについて

スポンサーリンク

ある条件の間の繰り返し処理

よくマクロの勉強をしていて、つまずく所の1つに変数を用いて繰り返しを使えるようになるというものがあります。私も独学で勉強した際にかなり苦戦したので、今日は変数の使い方と繰り返しの方法について書きます。

プログラミングでの変数とは

IT用語辞典(http://e-words.jp/w/%E5%A4%89%E6%95%B0.html)には「変数」が以下のように書かれています。

変数とは、プログラムのソースコード中で、データを一時的に記憶しておくための領域に固有の名前を付けたもの。

こういう初めて変数を扱う人にはイメージがわきにくいと思います。

変数はVBAでコードを書くときに、繰り返し作業のコードを簡略化させる場合や、条件によって作業を切り替えたい場合などに役立つものです。
本当はもっと色々な意味がありますが、まずはその認識で取り組めば理解しやすいと思います。

前回の点数表に色づけするVBAを基に、変数を用いたVBAコードを作成してみます。

スポンサーリンク

①前回の内容

以下の表があった際に、80点以上の点数をとっている人の名前のセルに黄色く色づけするコードを前回作成しました。

Sub 色を分ける

If Cells(1,2) >= 80 Then ’B1セルが80以上なら
Cells(1,1).Interior.ColorIndex = 6 ’A1セルを黄色に塗る。
End If ’Ifの作業を終了する。
If Cells(2,2) >= 80 Then ’B2セルが80以上なら
Cells(2,1).Interior.ColorIndex = 6 ’A2セルを黄色に塗る。
End If ’Ifの作業を終了する。
If Cells(3,2) >= 80 Then ’B3セルが80以上なら
Cells(3,1).Interior.ColorIndex = 6 ’A3セルを黄色に塗る。
End If ’Ifの作業を終了する。
If Cells(4,2) >= 80 Then ’B4セルが80以上なら
Cells(4,1).Interior.ColorIndex = 6 ’A4セルを黄色に塗る。
End If ’Ifの作業を終了する。
If Cells(5,2) >= 80 Then ‘B5セルが80以上なら
Cells(5,1).Interior.ColorIndex = 6 ’A5セルを黄色に塗る。
End If ’Ifの作業を終了する。
If Cells(6,2) >= 80 Then ‘B6セルが80以上なら
Cells(6,1).Interior.ColorIndex = 6 ’A6セルを黄色に塗る。
End If ’Ifの作業を終了する。

End Sub

このコードは作業する行が多くなるとムダに長くなるという問題があります。変数を用いることでコードを短く短縮し、見やすくします。

②変数で置き換える場所

変数は繰り返しを行う部分に使います。
前回作成したコードは赤い部分を除いて以下の内容の繰り返しになります。

If Cells(1,2) >= 80 Then ’B1セルが80以上なら
Cells(1,1).Interior.ColorIndex = 6 ’A1セルを黄色に塗る。
End If ’Ifの作業を終了する。

赤で記された部分は1~6まで変更する部分になります。
こういう繰り返しの中の一部分変更する場所を変数で置き換えるのが基本操作です。

③変数の宣言

変数は日本語でも英語でもほぼどんなものでも文字列なら使えます。
よく数字を表す変数で使われるのはi,kなどの文字です。

変数を使う時には事前に「これが変数ですよ」と記しておくコードが必要になり、それを「変数の宣言」といいます。今回はiという文字を変数として使用します。

Dim i

変数の宣言のコードはこれでOKです。他にその変数の範囲を表すコードを追加することもできますが、よくわからなければこのままでも大丈夫です。変数の範囲を表すものを「型」といいます。
この内容に関してはまた後日お伝えします。

④変数を用いたコードの作成

変数を使い、先ほどのコードを以下のように書き換えます。

Dim i ’変数としてiを使う
i = 1 ’iを1とする
If Cells(‘i,2) >= 80 Then ’(1,2)セルが80以上なら
Cells(‘i,1).Interior.ColorIndex = 6 ’(1,1)セルを黄色に塗る。
End If ’Ifの作業を終了する。

⑤繰り返しのコード作成

これをこのままコピペを使ってiの値を変更しながら繰り返してもよいのですが、それだと変数を使う意味があまりなくなってしまいます。そこで繰り返しのコードを用いて全体を簡略化します。

繰り返しのコードは大きく2つありますが、今回はFor~Next構文を用います。
使い方は以下のようになります。

For i = 1 to 6
実行したい処理
Next i

これでiに1~6まで順番に代入して、実行したい処理を繰り返し行うコードが作れます。
このコードを先ほどのコードと組み合わせて以下のようにします。

Sub 繰り返し実行Dim i ’変数としてiを使う
For i = 1 to 6 ’iを1から6まで順に増やす
If Cells(‘i,2) >= 80 Then ’(i,2)セルが80以上なら
Cells(‘i,1).Interior.ColorIndex = 6 ’(i,1)セルを黄色に塗る。
End If ’Ifの作業を終了する。
Next i

End Sub

一番最初にiを変数として宣言します。

次にFor~Next構文を用いて、作業内容を繰り返すコードを入れます。

For~Next構文の繰り返しの中にIf~End If構文を用いたコードを書き、条件分岐を行う作業を繰り返すコードを作成します。

繰り返し処理のコードのルール

繰り返しのコードを使うと便利なのが、データが100個あろうが10000個あろうが、
Forの後の数字を入れ替えるだけで簡単にコードを書き換えることができます。

For i = 1 to 100

For i = 1 to 10000

ちなみに1行おきに実行する場合は下記のように”Step 2”と記入します。(2行おきなら”Step 3”)

For i = 1 to 99 Step 2

この記載でiは1,3,5…と奇数だけで99まで進みます。

変数を使った繰り返しと条件分岐を覚えると一気に作業できる幅が増え、プログラムを作るのが楽しくなってきます。ぜひ楽しんでコードを作ってみてください。

おすすめ書籍 amazonicon Amazon rakutenicon 楽天 Yahooicon Yahoo検索

コメント