INDEX
Thenの概要
条件に応じた処理を実行する VBAの予約語 | ||
Then 概要 Then は、VBA の条件分岐( わかりやすく説明 Then は、「もし条件が当てはまったら、この処理を実行するよ!」という意味の命令です。 |
||
|
Then の基本的な使い方
Then を使って、条件が満たされたときにメッセージを表示する基本的な例です。
Sub ExampleThen()
Dim score As Integer
score = 80
If score >= 70 Then
MsgBox "合格です!", vbInformation, "判定"
End If
End Sub
解説:
If score >= 70 Then
で条件を指定。- 条件を満たす場合(score が 70 以上のとき)にメッセージを表示。
End If
を使い、複数行の If ステートメントを正しく終了させる。
1行で記述する場合
If … Then の処理が 1 つだけの場合、1行で記述できます。
Sub ExampleThenSingleLine()
Dim score As Integer
score = 80
If score >= 70 Then MsgBox "合格です!"
End Sub
解説:
- 処理が 1 行だけなら、
Then
の後に直接記述できる。 End If
は不要。
Else を使った条件分岐
If … Then … Else を使うと、条件に応じて異なる処理を実行できます。
Sub ExampleThenElse()
Dim score As Integer
score = 60
If score >= 70 Then
MsgBox "合格です!", vbInformation, "判定"
Else
MsgBox "不合格です。", vbExclamation, "判定"
End If
End Sub
解説:
Else
を使い、条件が満たされなかった場合の処理を記述。- 70 以上なら「合格」、それ以外なら「不合格」のメッセージを表示。
ElseIf を使った複数条件の分岐
ElseIf を使うと、複数の条件を設定できます。
Sub ExampleThenElseIf()
Dim score As Integer
score = 85
If score >= 90 Then
MsgBox "評価: 優", vbInformation, "判定"
ElseIf score >= 70 Then
MsgBox "評価: 良", vbInformation, "判定"
Else
MsgBox "評価: 可", vbInformation, "判定"
End If
End Sub
解説:
ElseIf
を使い、複数の条件を順番にチェック。- 最初に条件を満たしたものが実行され、それ以降の条件はチェックされない。
Excel で Then を使う
Excel のセルの値に応じて、条件分岐を行う例です。
Sub ExampleThenExcel()
Dim cellValue As Variant
cellValue = Range("A1").Value
If IsNumeric(cellValue) Then
If cellValue >= 100 Then
Range("B1").Value = "高得点"
Else
Range("B1").Value = "標準"
End If
Else
MsgBox "A1 には数値を入力してください", vbExclamation, "エラー"
End If
End Sub
解説:
- A1 の値が数値なら、100 以上かどうかで判定し、B1 に結果を出力。
- 数値でない場合はエラーメッセージを表示。
エラーを回避する方法
If … Then を使う際に、予期しないエラーを防ぐ方法を紹介します。
Sub SafeThenExample()
Dim cellValue As Variant
On Error Resume Next
cellValue = Range("A1").Value
If Err.Number <> 0 Then
MsgBox "エラーが発生しました: " & Err.Description, vbExclamation, "エラー"
Err.Clear
Exit Sub
End If
If IsEmpty(cellValue) Then
MsgBox "A1 が空白です", vbExclamation, "エラー"
Else
MsgBox "A1 の値: " & cellValue, vbInformation, "情報"
End If
End Sub
解説:
On Error Resume Next
を使い、エラーが発生した場合に適切に処理。- セルが空白の場合、適切なメッセージを表示。
Then の注意事項
- 比較演算子を適切に使用する:
=
(等しい)、<
(小さい)、>
(大きい)などを正しく使う。 - 条件が複雑な場合は Select Case を使う:
If ... Then
で条件が増えすぎると読みにくくなる。 - 1行で記述する場合は注意: 可読性が低くなるため、複数行に分けるのが望ましい。
よくある質問
- Q: If … Then を1行で書くのと複数行で書くのはどちらがよいですか?
- A: 1行でも書けますが、複数行のほうが可読性が向上します。
- Q: Else を省略できますか?
- A: はい。条件に当てはまらなかった場合は何も実行されません。
- Q: 数値比較でエラーが出ることがあります。なぜですか?
- A: 文字列や空白が含まれている可能性があります。
IsNumeric
でチェックすると安全です。
まとめ
- Then は、
If ... Then
ステートメントの一部として使用され、条件に応じた処理を実行する。 - 1行で記述できるが、複雑な条件では複数行を使う方が可読性が向上する。
- Else を使うことで、条件に当てはまらなかった場合の処理を記述できる。
- ElseIf を使うと、複数の条件を段階的に評価できる。
- Excel のセルの値を条件として判定し、動的な処理を行う際に役立つ。
- エラーハンドリングを適用することで、予期しないエラーを回避できる。