[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.010 Select Case XX To XX と Is

Select Case XX To XX と Is

メルマガ発行内容

<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でした。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.010を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・