<Select Case XX To XX と Is >= XX>
こんにちは、 回りくどい解説中の三流プログラマーKen3です。 今回は、 Select Case文 で 範囲のチェックをやってみたいと思います。 そんなたいしたことじゃないのでご安心を。 /* * 1.Select Case XX To XX / Is >= XX を使ってみよう */ 今回は、自分は、使ったこと無い、 ア.Select Case Case XX To XX イ.Select Case Case Is >= XX を簡単に書いてみます。 前回、ElseIfを使って、1から100の数字を判断してみました。 >1から100の乱数を発生させ、今日の運勢 >最高 81〜100 >いい感じ 61〜80 >ふつう 41〜60 >少し悪い 21〜40 >最悪 1〜20 >とメッセージを出すプログラムを書いてみたいと思います。 下記、サンプルプログラム。 Sub test7() Dim n As Integer '値を格納する変数を定義する Randomize ' 乱数発生ルーチンを初期化します。 n = Int((100 * Rnd) + 1) '(*1) 1 から 100 までの乱数を発生させます。 '判断する (*2) If 80 < n Then '80より上か? MsgBox n & "%、最高です" ElseIf 60 < n Then '次に60より上か?チェック MsgBox n & "%、いい感じです" ElseIf 40 < n Then MsgBox n & "%、普通です" ElseIf 20 < n Then MsgBox n & "%、少し悪いです" Else '全ての条件にあてはまらない時。 MsgBox n & "%、最悪です" End If End Sub ア.Select Case Case XX To XX で、三流君が説明したい、 今回の、Case XX To XX ってなに? まずは、サンプルから、 Sub test8() Dim n As Integer '値を格納する変数を定義する Randomize ' 乱数発生ルーチンを初期化します。 n = Int((100 * Rnd) + 1) '(*1) 1 から 100 までの乱数を発生させます。 Select Case n '(*2) n を評価する Case 81 To 100 '(*3)81〜100か判断します。 MsgBox n & "%、最高です" Case 61 To 80 MsgBox n & "%、いい感じです" Case 41 To 60 MsgBox n & "%、普通です" Case 21 To 40 MsgBox n & "%、少し悪いです" Case Else '(*4)全ての条件にあてはまらない時。(1 To 20でも可) MsgBox n & "%、最悪です" End Select '() End Sub まぁ、見たまんまなのですが、 Select Case n '(*2) n を評価する Case 81 To 100 '(*3)81〜100か判断します。 MsgBox n & "%、最高です" Case 61 To 80 MsgBox n & "%、いい感じです" (*2)で判断元の数値はnとしてます。 ポイントの書き方で、 (*3) Case 81 To 100 これで、nが81から100と範囲で判断することが出来ます。 (*4) Case Else '(*4)全ての条件にあてはまらない時。(1 To 20でも可) MsgBox n & "%、最悪です" Case Elseと書くと、 全ての条件に一致しない時に実行するプロックを書くことが出来ます。 範囲チェックしたい時などに使ってみてください。 イ.Select Case Case Is >= XX 次に、Case Is >= ですが、 読者さんより、下記のメールをいただきました。 H.Iさん wrote... >で、今回の「If〜ElseIf」の代替案として「Select」文を使った方が >すっきりとするかな?と思ってメールしてみました。 >(初歩的な事で恐縮ですが) >例えば: > > If 80 < n Then '80より上か? > MsgBox n & "%、最高です" > ElseIf 60 < n Then '次に60より上か?チェック > MsgBox n & "%、いい感じです" > ElseIf 40 < n Then > MsgBox n & "%、普通です" > ElseIf 20 < n Then > MsgBox n & "%、少し悪いです" > Else '全ての条件にあてはまらない時。 > MsgBox n & "%、最悪です" > End If > >を > > Select Case n > Case Is >= 80 : MsgBox n & "%、最高です" > Case Is >= 60 : MsgBox n & "%、いい感じです" > Case Is >= 40 : MsgBox n & "%、普通です" > Case Is >= 20 : MsgBox n & "%、少し悪いです" > Else : MsgBox n & "%、最悪です" > End Select > >なんてのはどうでしょうか? > ---- メールどうもです。 Case Is >= 80 って書けるんですね。 Sub test9() Dim n As Integer '値を格納する変数を定義する Randomize ' 乱数発生ルーチンを初期化します。 n = Int((100 * Rnd) + 1) '(*1) 1 から 100 までの乱数を発生させます。 Select Case n ' n を評価する Case Is > 80 '(*5)まず80より上か判断する MsgBox n & "%、最高です" Case Is > 60 '(*6)次に、60より上か判断する MsgBox n & "%、いい感じです" Case Is > 40 MsgBox n & "%、普通です" Case Is > 20 MsgBox n & "%、少し悪いです" Case Else '(*7)全ての条件にあてはまらない時。 MsgBox n & "%、最悪です" End Select '() End Sub (*5)(*6)のように、 Case Is > 80 '(*5)まず80より上か判断する MsgBox n & "%、最高です" Case Is > 60 '(*6)次に、60より上か判断する MsgBox n & "%、いい感じです" と書くことが出来ます。 もちろん、 Case Is < 21 とか、等号を逆にして、最悪からもOKです。 /* * 2.書き方の工夫、見やすい書き方 */ 三流君に最後質問いい? なんですか? 読者のサンプルに、 > Case Is >= 80 : MsgBox n & "%、最高です" って:を使って? 1行に書いてあるんだけど、なに?これ? あっ、通常は1行に1命令なんですが、 :(コロン)で区切って、1行に2命令以上書けるんですよ。 Sub test10() Dim n As Integer '値を格納する変数を定義する Randomize ' 乱数発生ルーチンを初期化します。 n = Int((100 * Rnd) + 1) '(*1) 1 から 100 までの乱数を発生させます。 Select Case n ' n を評価する Case Is <= 20: MsgBox n & "%、最悪です" Case Is <= 40: MsgBox n & "%、少し悪いです" Case Is <= 60: MsgBox n & "%、普通です" Case Is <= 80: MsgBox n & "%、いい感じです" Case Is <= 100: MsgBox n & "%、最高です" End Select End Sub みたいな感じで、:を使用して、簡潔に書くことも出来ます。 また、IF文でも、 Sub test2() Dim n As Integer '値を格納する変数を定義する Randomize ' 乱数発生ルーチンを初期化します。 n = Int((3 * Rnd) + 1) '(*1) 1 から 3 までの乱数を発生させます。 '結果を判断し、Msgboxで表示する If n = 1 Then '(*2) nが1か判断する MsgBox "グーを出しました" End If If n = 2 Then MsgBox "チョキを出しました" End If If n = 3 Then MsgBox "パーを出しました" End If End Sub と書いてるIf文を、 Sub test2() Dim n As Integer '値を格納する変数を定義する Randomize ' 乱数発生ルーチンを初期化します。 n = Int((3 * Rnd) + 1) '(*1) 1 から 3 までの乱数を発生させます。 '結果を判断し、Msgboxで表示する If n = 1 Then MsgBox "グーを出しました" If n = 2 Then MsgBox "チョキを出しました" If n = 3 Then MsgBox "パーを出しました" End Sub みたいに、 Thenのあと、1行の簡単な命令の場合書くことが出来ます。 でも、命令が1行でも必ずブロック形式の、 If 条件 Then 命令 Else 命令 End If で書く人も居るし、、、 動くことが一番大事ですが、 慣れてきたら、見やすく書くことも必要です。 修正時や解析時も、見易く書かれていると修正し易いです。 /* * 3.終わりの挨拶 */ 今回は、 軽めに、Select Case文で範囲のチェック を少し書いてみました。 感想・質問などあったら、掲示板に書いてもらえるとうれしいです *質問に回答形式だとネタ考えないでいいので、ラクできます(笑) 三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]