今回は前回作成したマクロの説明をします。
前回作成したマクロは1行A列の値を判定し、
判定結果を1行B列に設定します。
判定方法と1行B列の設定値は以下の8パターンです。
@未入力またはブランク "未入力エラー"
A文字列混入時 "文字列混入エラー"
B少数混入時 "少数混入エラー"
C80〜100の整数値 "優"
D60〜79の整数値 "良"
E30〜59の整数値 "可"
F0〜29の整数値 "不可"
G0〜100ではない整数値 "範囲外エラー"
この様に複数の条件で処理が分岐する場合、
ElseIfを用いたIf文を使用します。
処理の流れとしては、
@から順番に判定していき、
条件に当てはまったら、1行B列に値を
設定してIf文を終了します。
Gの条件はElseを使っていますので、
@〜Fまですべて満たされなければ、
必ずGの処理が行われます。
以下にこのIf文の補足事項を示します。
まず、Bでは、
少数が混入しているかチェックする為に
InStr関数を使っています。
InStr(1, work, ".", vbTextCompare)
InStr関数に上記の様な四つの引数を設定した場合、
変数workの1文字目から少数点を検索し、
見つかった場合は検索位置を返します。
例えば、workの値が0.5であれば、
少数点は左から2文字目なので、2を返します。
見つからなかった場合は、0を返します。
1行1列の値が整数なら、少数点が見つからず、
InStr関数は0を返します。
その為、下記ElseIf文を満たさず、Cの判定に
進みます。
ElseIf 0 <> InStr(1, work, ".", vbTextCompare) Then
1行1列の値が少数なら、変数work内で
少数点が見つかり、InStr関数は0以外を返します。
その為、ElseIfの条件を満たし、
1行B列に"少数混入エラー"を設定し、
If文を終了します。
InStr関数の詳細な説明はヘルプファイル等を
参照してみて下さい。
次にC〜Fの判定ですが、ここでは
AND演算子を使っています。
AND演算子はAND演算子の前後の条件を
満たした場合のみ、
条件を満たした事になります。
下記はCの判定処理ですが、
ANDを使っている為、
変数workが80以上かつ100以下という
二つの条件を満たす必要があります。
ElseIf 80 <= work And work <= 100 Then
AND演算子に対し、OR演算子があり、
こちらは、二つの条件のうちどちらか
一つでも満たせば、条件を満たした
事になります。
AND演算子、OR演算子についても、
ヘルプファイル等で調べてみてください。
ではまた・・・
2008年01月12日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/77992494
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.seesaa.jp/tb/77992494
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック


