みなさんこんにちはケンケンです。
今回はVBAの条件分岐と繰り返しの基礎を簡単にまとめたいと思います。
基礎事項ではありますが、応用範囲は無限にある分野なのできっちり復習していきましょう。
IFとForNextをきっちり復習しよう
VBAの理解を深めるためにはIFとForNextを使えないとダメなので、がんばって習得しましょう。
今回は、以下のような表を使って処理を進めていきます。
続いてやるべきミッションを先に示します。
①B列とC列を非表示にする
②合計が500以上だったら評価列に「〇」と表記する
③合計が500未満だったら評価列に「×」と表記する
④ ②と③の処理を繰り返す
これらのミッションをひとつひとつクリアして条件分岐と繰り返しをマスターしちゃいましょう。
B列とC列を非表示にする
パッと見どのようにコードを書いたらよいかわからないので、自動記録に助けてもらいます。
自動記録は上図のような手順でできます。
記録の終了まで出来たら、モジュールを開いてコードを見てみます。
このように書くみたいです。
「Select」と「Selection」は同じ事を表現をしているので、削除して見やすくします。
1 2 3 4 |
Sub Macro1() ' Macro1 Macro Columns("B:C").EntireColumn.Hidden = True End Sub |
ここまでできたら、いったん新しいプロシージャを作って②以降に進みます。
合計が500以上だったら評価列に「〇」と表記する
続いてIfステートメントを使って合計が500以上だったらE列に〇を表記していきます。
この時以下の手順でコードを書くとすんなりいきます。
①セルE2に〇を表記する
②IfステートメントをEndIfまで書ききる
③ ①のコードを②に挿入する
セルE1に〇を表記する
サクッと書いちゃいましょう。
1 2 3 |
Sub rensyu01() Range("E2").Value = "〇" End Subこ |
これでうまくいくはずです。
IfステートメントをEndIfまで書ききる
以下の図のようにIfからEndifまで書ききってしまいます。
Ifと書いたらEndIfまでいっきに書いてください。
箱を作るイメージです。ちゃんと作らないと中身が漏れたりしちゃうので最後まで書くことを重視しましょう。
①のコードを②に挿入する
続いて先ほど書いたコードを箱の中に入れます。
1 2 3 4 5 |
Sub rensyu01() If Range("D2").Value >= 500 Then Range("E2").Value = "〇" End If End Sub |
ここまで書いたら実行してみます。
E2セルには何も起こらないはずです。条件が500以上なのでうまくいってそうです。
合計が500未満だったら評価列に「×」と表記する
今度は合計が500未満だったら「×」と表記してみましょう。
手順は以下の通りです。
①EndIfの前にElseを挿入し、分岐をつくる
②「×」をE2セルに表記するコードを加える
EndIfの前にElseを挿入し、分岐をつくる
条件分岐させるときにはElseを使います。
まずは、分岐させるための箱を付け加えるイメージです。
「×」をE2セルに表記するコードを加える
次はElseの下に「×」のときのコードを加えます。
1 2 3 4 5 6 7 |
Sub rensyu01() If Range("D2").Value >= 500 Then Range("E2").Value = "〇" Else Range("E2").Value = "×" End If End Sub |
上記コードを実行してみましょう。
繰り返し処理をする
ここまでできたらForNext構文を使って6行目まで繰り返し処理をしていきます。
以下の手順で処理していきます。
①ForNext構文を最後まで書いちゃう
②If~EndIfまでをForとNextの間に挿入する
③必要な個所を変数に変える
ForNext構文を最後まで書いちゃう
まず構文を最後まで書いてしまいます。
繰り返し処理に必要な変数を用意してから書きましょう。
If~EndIfまでをForとNextの間に挿入する
続いて、先ほど書いたIf構文をごっそりForとNext間に入れ込みます。
必要な個所を変数に変える
最後に繰り返し処理する箇所を変数に置き換えます。
今回は、行数が繰り返しの対象なので「A1セル」だったら「1」の部分を変数に置き換えます。
1 2 3 4 5 6 7 8 9 10 |
Sub rensyu01() Dim cnt For cnt = 2 To 6 If Range("D" & cnt).Value >= 500 Then Range("E" & cnt).Value = "〇" Else Range("E" & cnt).Value = "×" End If Next End Sub |
コードを実行してみて以下のようになっていたら成功です。
最後に冒頭で作った非表示のコードを加えて終了です。
いかがでしたか、比較的簡単なIfとForNextを使った例をご紹介しましたが、
複雑な処理も基本的にこれの応用なのでしっかりマスターしちゃいましょう。
みなさん、こんにちはケンケンです。 エクセルVBA入門編も3回目になりました。 前回までの復習はできていますか。 [sitecard subtitle=関連記事 url=https://expenblog.com/43[…]