ACCESS VBA if文を使って条件分岐する方法(VBAコード公開)
ACCESSに限らず、プログラミングで最もよく使う構文は条件分岐とループだと思います。
ACCESSのVBAで条件分岐させる際にはIf~thenの構文が良く使われます。
今回は、VBAプログラミングで最もよく使われるであろう、If文を使って条件分岐する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。
If文とは
If文とは、VBAで条件分岐をするための記述方法です。
どのようなプログラム言語でも条件分岐とループが最もよく利用される構文だと思いますが、ACCESS VBAでもIf文は非常に多用されます。
If文の構文
If文は以下の構文で使用します。
If 条件式 then
条件に合致した場合の処理
End If
条件式と条件に合致した際の処理を記載するだけですので、比較的簡単に使用できます。
最後のEnd Ifを記載し忘れるとエラーとなりますので、ご注意ください。
また、条件に合致しない場合の処理も規定することができます。
この場合はElseを使って以下のように記載します。
If 条件式 then
条件に合致した場合の処理
Else
条件に合致しなかった場合の処理
End If
VBAコードサンプル
では、If構文を使ったVBAコードのサンプルを見ていきましょう。
以下は、3月年度締めの場合に、日付から年度を求めるプロシージャです。
Public Function nendo(target_day As Date) As String
If Month(target_day) <= 3 Then
nendo = Year(target_day) - 1
Else
nendo = Year(target_day)
End If
End Function
では処理を解説します。
このプロシージャを呼び出す際に、引数としてtarget_dayが指定されて渡されます。
If Month(target_day) <= 3 Then
上記が条件式です。
target_dayの月が3より小さい場合、つまり1~3月の場合、という条件ですね。
条件に合致した場合は、
nendo = Year(target_day) - 1
が適用され、年度は実際の年から-1されます。
例えば、2021年3月なら年度は2020年度、という具合です。
一方、Else以降は4月以降の場合の処理です。
nendo = Year(target_day)
この場合は、target_dayの年の部分がそのまま年度になります。
例えば、2021年4月なら2021年度、ということです。
If文記載時のコツ
最後にIf文を記載する時のコツをいくつかお伝えします。
先に構造を作る
If文はどうしても構造が複雑になりがちです。
その際、End Ifなどの記述漏れが発生すると、バグの原因になってしまいます。
これを防ぐためにIf文は構造から作るようにしましょう。
例えば先ほどのサンプルコードは以下の順番で記述していきます。
1.条件式を書く
最初は1行目の条件式を書いてIf文をスタートさせます。
If Month(target_day) <= 3 Then
2.End Ifを書く
次は最後のEnd Ifを書いて、書き忘れを防ぎましょう。
If Month(target_day) <= 3 Then
End If
3.Elseを書く
次は、中間部分に必要に応じてElseを入れます。
If Month(target_day) <= 3 Then
Else
End If
4.条件に合致した時の処理を書く
最後に条件に合致した時の処理を記述します。
If Month(target_day) <= 3 Then
nendo = Year(target_day) - 1
Else
nendo = Year(target_day)
End If
この順番で記述すればEnd Ifの書き忘れを防ぐことができます。
上から順に書いていくと構造が崩れることが多くなるので注意しましょう。
段落の位置
If文が一つなら良いのですが、If文の中に更にIf文を記載していくような場合は、どのIf文のEnd Ifが書いてあるかわかりにくくなります。
こうした際に混同しないよう、If文ごとに段落の位置を合わせると分かりやすいでしょう。
下記に例を記載します。
If 条件式1 then
条件に合致した場合の処理1
If 条件式2 then
条件に合致した場合の処理2
If 条件式3 then
条件に合致した場合の処理3
End If
End If
End If
このように、VBAを後でメンテナンスすることも考慮して、コードの可読性は高めておきましょう。
以上、If文を使って条件分岐する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。