eval(ez_write_tag([[468,60]、 “sourcedaddy_com-box-3″、 “ezslot_1″、102、 “0”、 “0”]));使用SelectCaseステートメント
MS-Excel /一般的なフォーマット
If … ElseIfを使用して複数のテストを実行することは、便利な手法です。これは、頻繁に使用するVBAツールです。ただし、作成する必要のあるテストの数が増えると、すぐに扱いにくくなります。 2つまたは3つのテストで問題ありませんが、それを超えるとロジックを追跡するのが難しくなります。
このような状況では、VBAのSelectCaseステートメントの方が適しています。アイデアは、最初に論理式を提供してから、一連の可能な結果をリストすることです。ケースと呼ばれる可能性のある結果ごとに、ケースが真であることが証明された場合に実行する1つ以上のVBAステートメントを指定します。構文は次のとおりです。
Select Case TestExpression Case FirstCaseList Case SecondCaseList <etc> Case Else End Select
TestExpression
この式は、構造体の先頭で評価されます。値(論理、数値、文字列など)を返す必要があります。
CaseList
TestExpressionの1つ以上の可能な結果のリスト。これらの結果は、コンマで区切られた値または式です。VBAは、の各要素を調べます。リストを使用して、TestExpressionに一致するかどうかを確認します。式は次の形式のいずれかを取ることができます。ExpressionExpression To ExpressionIs LogicalOperator ExpressionToキーワードは、値の範囲(1〜10など)を定義します。 。Isキーワードは、値の制限のない範囲を定義します(たとえば、Is > = 100)。
ステートメント
これらは、VBAが関連するCaseListはTestExpressionと一致します。TestExpressionと一致するCaseListが含まれていない場合、VBAはオプションのElseStatementsを実行します。
注:複数のCaseListに一致する要素が含まれている場合TestExpression、VBAは、SelectCase構造で最初に表示されるCaseListに関連付けられたステートメントのみを実行します。
リストは、SelectCaseを使用してFrequency引数の問題を処理する方法を示しています。
を使用するプロシージャ複数の値をテストするためのケースの選択ケースの例:テストスコアの文字の成績への変換
ケースの選択ステートメントをよりよく理解するために、この強力な独自の才能をよりよく示す別の例を見てみましょう。構造。次の表に従って、生のテストスコアを文字グレードに変換するプロシージャを作成するとします。
生のスコア | レターグレード |
90以上 | A |
80〜89 | B |
70〜79 | C |
60〜69 | D |
60未満 | F |
リストは、SelectCaseステートメントを使用して変換を行うLetterGradeプロシージャを示しています。
rawScore引数は、0〜100の整数値です。SelectCase構造は、最初にrawScoreが負であるかどうかを確認し、負の場合、関数はエラーメッセージを返します。次のCaseステートメントは、スコアが60未満であるかどうかを確認し、60未満の場合、関数は文字グレード「F」を返します。次のCaseステートメントは70未満のスコアを探します。これまでのところ、スコアが少なくとも60であることは(前のCaseステートメントのおかげで)すでにわかっています。したがって、このケースは実際にスコアが60であるかどうかを確認しています。 60〜70(60を含むが、70は含まない)。その場合、文字グレード「D」が返されます。残りのCaseステートメントも同じように進行します。 Case Elseは、スコアが100より大きいかどうかをチェックし、そうである場合は別のエラーメッセージを返します。
別の例:RGB関数を使いこなす
RGB(赤、緑、青)VBA関数はいつでも使用できます。プロパティの色を指定します。 3つの名前付き引数(赤、緑、青)はそれぞれ、0〜255の整数であり、各コンポーネントの色のどれだけが最終的な色に混合されるかを決定します。たとえば、赤のコンポーネントでは、0は赤が存在しないことを意味し、255は純粋な赤が存在することを意味します。 3つの値がすべて同じである場合、灰色の陰になります。
共通の色を生成する各コンポーネントのサンプル値は次のとおりです。
赤 | 青 | 緑 | 結果 |
0 | 0 | 0 | 黒 |
0 | 0 | 255 | 青 |
0 | 255 | 0 | 緑 |
0 | 255 | 255 | シアン |
255 | 0 | 0 | 赤 |
255 | 0 | 255 | マルジェンタ |
255 | 255 | 0 | 黄色 |
255 | 255 | 255 | 白 |
ただし、これらの組み合わせを記憶するのではなく、VBAとSelect Caseを機能させて、色の選択を容易にします。リストは、不可解な無感覚ではなく名前(たとえば、「赤」や「青」)を使用できるVBAColor関数を示しています。最も一般的な16色を設定するための組み合わせ。
色名を文字列として受け取り、対応するRGB値を返す関数
VBAColorは、単一の引数colorNameを取ります。これは、ユーザーの色の名前です。一緒に働きたい。 SelectCaseステートメントがエラーを防ぐために引数をどのようにマッサージするかに注意してください。
Select Case LCase(Trim(colorName))
Trim関数は、先頭の余分なスペースを削除し、引数の終わり、LCase関数はcolorNameを小文字に変換します。これにより、関数で大文字と小文字が区別されなくなります。つまり、「黒、黒、黒のいずれを送信してもかまいません。関数は引き続き機能します。
関数の残りの部分では、Caseステートメントを使用してさまざまな色の名前と適切なRGB値を返します。ColorTesterプロシージャを使用してVBAColoraを回転させることができます。このプロシージャは、現在選択されているワークシートセルのフォントの色をフォーマットするだけです。
注:VBAは、8つの色定数も定義します。基本的な色(vbBlack、vbBlue、vbCyan、vbGreen、vbMagenta、vbRed、vbWhite、vbYellow)が必要な場合に使用できます。