2.条件判断・条件分け処理関係 |
1.条件判断を行う If〜Then〜Else 2.ちょっと綺麗なIf文の使い方 3.条件分け処理を実施 Select Case 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.条件判断を行う If〜Then〜Else |
構文 If 条件式 Then 条件を満たす場合の処理 ElseIf 次の条件式 Then 次の条件を満たす場合の処理 Else すべての条件を満たさなかった場合の処理 End If 条件式終了 例1.条件が1つの場合 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 Text2.SetFocus End If End Sub Text1で、Enter キーが押されたらフォーカスをText2へ移す。 例2.条件が複数の場合 If Option1(0) = True Then strRetu = "A" ElseIf Option1(1) = True Then strRetu = "B" ElseIf Option1(2) = True Then strRetu = "C" End If どのオプションボタンが押されたか調べ、それにより変数strRetuに代入している 例3.その他の使用例 If intKen=0 Then Exit Sub データ件数(intKen)が0件ならプロシージャを抜ける If ret=>"1" And ret=<"9" Then ret="0" & ret End If 月等の入力チェックで1桁の入力なら 01 のように修正している |
2.ちょっと綺麗なIf文の使い方 |
1.次のようなコードの場合 If X <> 0 Or y <> 0 Then 次のように簡略化できる If X Or y Then 2.次のようなコードの場合 If X = 0 And y = 0 Then 次のように簡略化できる If (X Or y) = 0 Then 3.次のようなコードの場合 If (X = 0 And y = 0) Or (X <> 0 And y <> 0) Then 次のように簡略化できる If (X = 0) Xor (y <> 0) Then 4.次のようなコードの場合 If X > 0 Then y = 1 Else y = 0 End If 次のように簡略化できる y = -(X > 0) 5.何でも簡略化すればいいものでもない。たとえば次の場合 If x > 0 And Tan(x) < 1 Then y = 1 次のように別々のIFブロックに分割すると If x > 0 Then If Tan(x) < 1 Then y = 1 End If 最初のIFがFalseの場合は次のIF文が実行されないのでその分、実行速度が速くなります。 6. IF文が連続して使用される場合は最初に頻繁に現れる値を処理する条件文を書くようにする(上記の理由と同じ) 但し、一部コードが分かりづらくなったりしますので、変更する事で実行速度が高速になる場合に利用するようにして、効果が無いような場合は理解しやすいコードを使って下さい。 |
一見単純そうな If 文でもこれだけ書き方が色々あり、工夫次第で簡略化した書き方や高速化につながる書き方ができます。 繰り返し処理をするような場合等はプログラムの実行速度を計測しながらプログラムを組むようにすると、どのように書けば、どのような使い方をすれば効率的なプログラムになるかが自然と身に付くかと思います。 |
3.条件分け処理を実施 Select Case |
構文 Select Case 条件判定に利用する式 Case 条件判定の式の値 条件を満たす場合の処理を記入 Case Else すべての条件を満たさなかった場合の処理 End Select 使用例 Private Sub Command1_Click() Dim intNumber As Integer intNumber = CInt(Text1.Text) Select Case intNumber ' intNumber を評価します。 Case 1 To 5 ' intNumber の値が 1 〜 5 の場合。 Label1.Caption = "1 から 5 の間" Case 6, 7, 8 ' intNumber の値が 6 〜 8 の場合。 Label1.Caption = "6 から 8 の間" Case Else ' その他の値の場合。 Label1.Caption = "1 から 8 以外の数値" End Select End Sub テキストボックスに入っている数字に、Label に結果をプリントしている。 又、比較演算子を使用することもできますし、該当が重複しているような場合は、行の先頭から処理されますので、その後の比較には該当しなくなります。 ご自分で色々設定を変更して試して見るのが理解する上で一番の早道かと思いますので、ぜひ試して見て下さい。 |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
フロー制御ステートメント 条件式 条件分け 条件分岐 IF文 if then else select case 複数条件 きれいなIF文の書き方 上手なIF文の書き方 簡単なIF文の書き方 比較 演算子 比較演算子 |