こんにちは!大阪市住之江区に拠点を置く会社『縁紡ぐ』の稲垣です。
当社は、Excel、ACCESS、RPAなどのシステム開発や既存ツールを使った業務効率化の提案、また、ITスキルアップのための教育に力を入れています。効率的なビジネス運営を目指している企業様、ITスキルの向上を図りたい企業や個人の方に、最適なご提案をさせていただきます。業務プロセスの改善とITスキルアップをサポートし、共に成長するパートナーでありたいと考えています。
VBAのIF文とIIF文:初心者向けガイド
VBA(Visual Basic for Applications)は、ExcelやAccessなどのMicrosoft Officeアプリケーションを自動化するための強力なツールです。この記事では、VBAの基本的な条件分岐であるIF文とIIF文について解説します。初心者の方でも理解しやすいように、具体例を交えながら説明します。
IF文とは
IF文の基本
IF文は、特定の条件が真である場合に実行されるコードを指定するための文です。以下のように書きます。
If 条件 Then
' 条件が真の場合の処理
End If
複数の条件で処理を分岐する
IF文は、Else
やElseIf
を使って複数の条件をチェックすることができます。以下にその構文を示します。
If 条件1 Then
' 条件1が真の場合の処理
ElseIf 条件2 Then
' 条件2が真の場合の処理
Else
' どちらの条件も偽の場合の処理
End If
例えば、点数によって処理を分岐したい時は、以下のようになります。
Dim score As Integer
score = 75
If score >= 90 Then
MsgBox "優"
ElseIf score >= 75 Then
MsgBox "良"
ElseIf score >= 60 Then
MsgBox "可"
Else
MsgBox "不合格"
End If
この例では、score
の値に応じて異なるメッセージが表示されます。
なるべくネストしないようにする
Dim score As Integer
score = 75
If score >= 90 Then
MsgBox "優"
Else
If score >= 75 Then
MsgBox "良"
Else
If score >= 60 Then
MsgBox "可"
Else
MsgBox "不合格"
End If
End If
End If
なるべくネストにしない方がコードの可読性はよくなります。
ネストのネストなんかは、作っているときにはすぐに理解できますが、1週間後のあなたにとっては読み解くだけで一苦労します💦
チェックなどで処理を中止する場合はElseIfを使わない方が分かりやすい
例えば、入力チェックなどを行う場合です。
Dim userInput As String
userInput = InputBox("数値を入力してください:")
' 空入力のチェック
If userInput = "" Then
MsgBox "入力が必要です。"
Exit Sub
End If
' 数値チェック
If Not IsNumeric(userInput) Then
MsgBox "数値を入力してください。"
Exit Sub
End If
' 範囲チェック
If CInt(userInput) < 0 Or CInt(userInput) > 100 Then
MsgBox "数値は0から100の範囲で入力してください。"
Exit Sub
End If
MsgBox "入力された数値は " & userInput & " です。"
ElseIfでたくさん書くことは、可読性を落とすことになるから気を付けてくださいね
IIF文とは
IIF文
IIF文は、簡潔に条件分岐を記述できる文です。以下のように書きます。
結果 = IIF(条件, 真の値, 偽の値)
Dim score As Integer
score = InputBox("成績を入力してください:")
Dim result As String
result = IIF(score >= 60, "合格", "不合格")
MsgBox "あなたの成績は " & result & " です。"
このコードでは、score
の値に応じて合否を判定し、結果をメッセージボックスで表示します。
IIF文を使う際の注意点
IIF文は条件が真の場合と偽の場合の両方を評価します。これにより、意図しない副作用が生じることがあります。例えば、条件が真の場合にエラーを引き起こすような処理を行うと、偽の場合でも評価されてしまいます。
Dim x As Integer
Dim y As Integer
x = 0
y = 10
' ここでゼロ除算が発生する可能性があります
MsgBox IIf(x <> 0, y / x, "ゼロ除算エラー")
条件式で「x <> 0 」になっているので偽となるのですが、IIF文は、真のときの「y / x」の評価を実行してしまいます。ゼロで割り算しようとするため、”ゼロ除算エラー”とはならず、エラーとなります
IIF文を使うときは、注意が必要ですね。
初心者の方は、IF文をまず利用することをおススメします
まとめ
IF文とIIF文はVBAにおいて非常に重要な条件分岐の手段です。特に入力チェックにおいて、ElseIf
を使わずに複数のIf
文を用いることで、コードの可読性が向上し、メンテナンスしやすくなります。
条件分岐は、プログラミングの基本ですのでぜひ使えるようになってくださいね!
稲垣
- Excel、ACCESSでのシステム開発が得意
- ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
- 自家焙煎するほどのコーヒー好き
- 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
- 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
- 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
- お客様にとって本当に良いことかを第一に考える人
コメント