Excel VBAで条件分岐したプログラミングをする
Excel VBAは、Microsoft Excelで使用できるプログラミング言語です。
Excelをより効率的に使用するためのプログラミング言語です。Excelをもっと便利に使いたい人におすすめのプログラミング言語です。Excel VBAを覚えると、Excelの作業が楽になります
具体的に出来ることは以下のとおりです。
- Excelの操作を自動化
- 独自の機能を作成
- データの分析・処理
- レポートの作成
- フォームの作成
- マクロの作成
このExcel VBAというカテゴリーでは、私が学んだExcel VBAのコツやテクニックを紹介していきます。
今回は、Excel VBAで条件分岐したプログラミングをする方法について、ご紹介します。
Excel VBAで条件分岐したプログラミングをする方法
プログラミングの条件分岐とは
プログラミングの条件分岐とは、ある条件式の結果によって、次に行う処理を切り替えること、また、そのような命令文のことを言います。簡単に言うと、「もし~ならば~」という形式のプログラミングのことです。
Excel VBAでは、条件分岐したプログラミングもできます。
今回は、Excel VBAで条件分岐したプログラミングをする方法をご紹介します。
① 「もし◯◯ならば、☓☓」という場合
条件分岐はIf文を使います。
「もし◯◯ならば、☓☓」という場合は、以下のコードを書きます。
If 条件式 Then
条件式が成立する場合の処理
End If
なお、このコードで使われるIfは「もし」という意味で、Thenは「ならば」という意味です。
「もし◯◯ならば、☓☓」の具体例
以下の表で、会員種別がSの場合は、メッセージボックスで「100円」と表示されるコードを書いてみます。
コードは以下のようになります。
コードの説明をします。
条件式は、言葉で書くと「もし会員種別がSならば、100円です」となります。
これをExcel VBAで書く場合は、以下のようになります。
会員種別のSが入っているセルはB3です。セルのB3の値を意味する
Range(“B3”).Value
と書きます。
セルのB3に入っている文字はSです。
これは、別の言い方をすると、B3の値はSと等しいということになります。
値が等しい場合は「=」を使います。
そうすると「会員種別はSと等しい」とコードを書くと
Range(“B3”).Value = “S”
となります。Sがダブルコーテーション(”)で囲まれているのは、Sが文字列だからです。Excel VBAでは、文字列の場合はダブルコーテーション(”)で囲むというのがルールです。
そしてこの条件式をメッセージボックスで表示させるには、
MsgBox “100円”
と書きます。これは、メッセージボックス(MsgBox)に、文字列の100円を表示させるというコードです。
ではF5キーを押して実行します。
すると以下のようにメッセージボックスに100円と表示されます。
② 「もし◯◯ならば、☓☓、◯◯でなければ△△」という場合
「もし◯◯ならば、☓☓、◯◯でなければ△△」という場合は、以下のコードを書きます。
If 条件式 Then
条件式が成立する場合の処理
Else
条件式が成立しない場合の処理
End If
Elseは「~でなければ」という意味です。
「もし◯◯ならば、☓☓、◯◯でなければ△△」の具体例
以下の表で、会員種別がSではなくAの場合、メッセージボックスで「300円」と表示されるコードを書いてみます。
コードは以下のようになります。
コードの説明をします。
以下のコードの意味は、B3の値がSならば、メッセージボックスに100円と表示される、というものです。
If Range(“B3”).Value = “S” Then
MsgBox “100円”
ただB3には、Aが入っています。
ですので、以下のコードを書きます。これは「B3の値がSでなければ、メッセージボックスに300円と表示させる」という意味です。
Else
MsgBox “300円”
ではF5キーを押して実行します。
すると以下のようにメッセージボックスに300円と表示されます。
③ 「もし◯◯ならば、☓☓、▢▢ならば☆☆、◯◯又は▢▢でなければ△△」という場合
「もし◯◯ならば、☓☓、▢▢ならば☆☆、◯◯又は▢▢でなければ△△」という場合のコードは以下の通りです。
If 条件式1 Then
条件式1が成立する場合の処理
ElseIf 条件式2 Then
条件式2が成立する場合の処理
Else
いずれの条件も成立しない場合の処理
End If
If文にElseIfで始まるコードを書くと、条件式1が成立しないが、条件式2が成立する場合、その処理を行います。
Elselfは複数使うことができます。
「もし◯◯ならば、☓☓、▢▢ならば☆☆、◯◯又は▢▢でなければ△△」という場合の具体例
以下の表で、会員種別がSの場合はメッセージボックスで100円、Aの場合はメッセージボックスで300円、それ以外の場合は、メッセージボックスで「入力値が不正です」と表示されるコードを書いてみます。
コードは以下のようになります。
このコードの説明をします。
If Range(“B3”).Value = “S” Then
MsgBox “100円
は、1つ目の条件になります。この表では、会員種別がSの場合はメッセージボックスで100円と表示するという意味になります。
ElseIf Range(“B3”).Value = “A” Then
MsgBox “300円”
は2つ目の条件になります。この表では、会員種別がAの場合はメッセージボックスで300円と表示するという意味になります。
Else
MsgBox “入力値が不正です”
は、SでもAでもない場合は、メッセージボックスに「入力値が不正です」と表示するという意味になります。
最初にセルのB3にSと入力してF5キーを押します。
すると以下のメッセージボックスが出ます。
メッセージボックスに100円と表示されます。
次にセルのB3にAと入力してF5キーを押します。
すると以下のメッセージボックスが出ます。
メッセージボックスに300円と表示されます。
次にセルのB3にSでもなくAでもない、例えばBと入力してF5キーを押します。
すると以下のメッセージボックスが出ます。
B3にSでもなくAでもないBが入力されているので、メッセージボックスに「入力値が不正です」と表示されます。
今回は、メッセージボックスに表示させるという方法で説明しましたが、For文を使ったコードを使用すれば、料金のセルに、会員種別がSの場合は100円、Aの場合は300円、それ以外は「入力値が不正です」と表示させることができます。
※(For文については、Excel VBAの繰り返し(For文)の使い方【初心者向け】、Excel VBAで最終行を取得する方法【初心者向け】 というブログ記事に書いてありますので、ご覧ください)。
表は以下の通りです。
コードは以下の通りです。
F5キーを押します。
会員種別がSの場合は100円、Aの場合は300円、それ以外は「入力値が不正です」と表示されています。