前回の記事では、変数や定数の宣言方法を記載しました。
https://qiita.com/HiHiroyoshi/items/e306955c364db95f8f3e
#今回の記事では、判定文(If文やSelect文)について述べます。
では、早速 変数が10の場合に何かしらの処理を行うプログラムを記載します。
Dim hoge As Integer = 10
Dim checkflag As Boolean = False
'判定文
If hoge = 10 Then
'True の時の命令
checkFlag = True
End If
こういった形で、記載を行います。
もっと、スマートな書き方があると思われる方もいるはずですが、
初心者向けという点でご容赦ください。
注意点としては、checkFlagは、If文の前で宣言していることです。
スコープ という考えがあり、If文内で変数を宣言した場合、
If文内でしか使えない為です。
仮にcheckFlagをIf文内で宣言してIf文の下で利用しようとしても、
エラーが発生します。
Dim hoge As Integer = 10
'判定文
If hoge = 10 Then
'True の時の命令
Dim checkFlag As Boolean
checkFlag = True
End If
'ここでエラーが発生
checkFlag = False
仮に入力チェックを行う際は、全体のエラーフラグ(errorFlag)を判定文の前に置き、その都度If文を用いて、個々のエラー判定の際に、errorFlagにFalseを入れてあげるような書き方が挙げられます。
では、このIf文をさらに改造していきましょう。
例えば、Trueでないときにも処理を行う場合、
Dim hoge As Integer = 10
Dim checkFlag As Boolean
'判定文
If hoge = 10 Then
'True の時の命令
checkFlag = True
Else '一致しない False場合
checkFlag = False
End If
といった、Else(それ以外)の場合の処理を行います。
では、If-Else文をさらに発展させましょう。
Dim hoge As Integer = 15
'Stringは文字列を表します。
Dim message As String
'判定文
If hoge < 10 Then
'10未満の時の命令
message = "値が10未満です。"
ElseIf hoge >= 10 And hoge <= 20 Then
message = "値が10以上20以下です。"
Else 'その他
message = "値が20より大きい場合"
End If
といった形になります。hogeの値を変更してみて、
全てのmessageの分岐を確認してみましょう。
では、 実務におけるIf文の使いかた を一つ挙げましょう。
Dim stringNumber As String = "15"
Dim hoge As Integer
Dim message As String
If Integer.TryParse(stringNumber, hoge) Then
'判定文
If hoge < 10 Then
'10未満の時の命令
message = "10未満です。"
ElseIf hoge >= 10 And hoge <= 20 Then
message = "10以上20以下です。"
Else 'その他
message = "20より大きい場合"
End If
Else
message = "整数に変換できません。"
End If
新たに2点の変更がありますね。
Integer.TryParseとIf文の中にIf文が入っています。
1つ目のInteger.TryParseは、ある文字列(stringNumber)を数字(hoge)に置き換える。置き換えた際の結果がTrue(置き換えできた)かFalse(置きかえできない)かを判定するものです。
なので、文字列を整数に変換できなかった場合、
message = "整数に変換ができません"
が実行されます。
整数に変更できた場合は、さらにネスト(入れ子)にしたIf文が実行されていく形となります。
業務でプログラミングする上、気をつけてほしいのは、 ネストの行いすぎ です。
If文の中にIf文、さらにIf文を書いていくとプログラム自体が読みにくくなるため、If文内でのIf文の多用は避けるべきだと考えています。
まとめ
If文やIf文のネスト、実務での利用の一例を挙げました。
次回は、vb.netでのSelect文を取り上げる予定です。