先日、水野麻子さんから質問があって回答したときに、Ifステートメントにて、ORやANDを使いました。
そのことが記事に書かれています。
この記事では、ハイフンに似た記号を特定して処理をするときの文字コードの考え方が記載されています。
で、マクロで処理をするとことで話題になっているのが、以下の記述。
For i = 8208 To 8722 If i = 8722 Or i = 8259 Or (i >= 8208 And i <= 8213) Then ・・・・・
このようにして、Ifステートメントの条件を複数記載しています。
i の値が8722の場合、または
i の値が8259の場合、または
i の値が8208以上で8213以下の場合に、
という意味です。
ここで注意したいことがあります。
「i が8722か8259である」という条件は、
i = 8722 Or 8259
としてはいけません。
しっかり、
i = 8722 Or i = 8259
と i を繰り返し記述します。
また、「8208以上で 8213以下」という条件は、
8208 <= i <= 8213
と、数学の式のようにしてもいけません。
i >= 8208 And i <= 8213
i を条件ごとに繰り返して、条件自体をAndで結びます。
また、And でつながれたものをひとくくりにするときに括弧を使います。
If i = 8722 Or i = 8259 Or (i >= 8208 And i <= 8213) Then
このようにすると意味がわかると思います。
可読性をよくするためには、記載する順序を変えてもいいかもしれないですね。
小さい順に書いた方が自然かもしれません。
If (i >= 8208 And i <= 8213) Or i = 8259 Or i = 8722 Then
ループ処理において、カウンタ変数(i)が変化したときにその値によって処理を分けるときに使えます。
コメント
-
2. Re:Re:IFステートメント(条件分岐)のOrとAnd
>kinuasaさん
どうもありがとうございます。
Select Case ステートメントは便利ですね。
複数個の分岐条件がある時に使うような
気がして今回思いつきませんでした。1つのケースで分岐するときでも、
複数の条件を1行に簡単に書けて
いいですね!いただいたリンクですが、これ面白いですね。
ありがとうございます。「2.Case文は意外と多機能」
この項目にある「Case "か" To "こんん"」という記述ですが、ワイルドカードのように使えますね。
文字列の判定に今後使ってみます。
毎度おもしろ技を教えていただきありがとうございます。
-
1. Re:IFステートメント(条件分岐)のOrとAndこんにちは、kinuasaです。
Select Caseを使うなら下記のような感じでしょうか?Public Sub Sample()
Dim i As LongFor i = 8208 To 8722
Select Case i
Case 8208 To 8213, 8259, 8722
Debug.Print i
End Select
Next
End Sub結構複雑な条件でも分岐できるCase文も便利です(^^)・Select Case はもっと使える
http://homepage1.nifty.com/rucio/main/technique/Select.htm