goo blog サービス終了のお知らせ 

私的備忘録

C#とかVBAとか。自分の備忘用なので丁寧には書いてないのであしからず。

条件分岐、 If 、 Select Case 、 Not

2020-05-17 | 日記

◆◆◆◆◆条件分岐
◆◆◆ If 文
If 条件 Then
    ...
ElseIf 条件 Then
    ...
Else 条件 Then      '//全てに当てはまらないとき
    ...
End If

・ If 文では「=True」は冗長。ただし変数名をHasErrorなどのように工夫した上での話。可読性が落ちるようなら「=True」を書く。
・ Select Case でも If のような条件判定が可能(後述)。
・ショートサーキットは If ではできないが Select Case なら可能。

◆よく利用される Boolean 型の変数名
・Is+形容詞        例:IsEnabled
・Has+過去分詞     例:HasSent
・Can+動詞原型     例:CanGet
・三単現動詞        例:Exists
・三単現動詞+名詞  例:ExistsError、HasError
・Should+動詞原型  例:ShouldCollect


◆◆◆ Select Case
Select Case 式
    Case "バナナ"
        ...
    Case "リンゴ"
        ...
    Case Else           '//どのケースにも当てはまらないとき
        ...
End Select

・条件判定が大小などの場合、Isで記述(ただしVBEではオートコンプリートされる)
Select Case X
    Case Is > 80
        ...
    Case Is > 60
        ...
    Case Else
        ...
End Select

・範囲指定できるものはToが使える。(アルファベットなど)
    Case "B" To "K"

・Select Case のメリットは If の条件判定相当部分を1度の記述で済ませられること。(Ifだと「If 条件 If 条件・・・」と何度も書くことになる。)

・Caseの後にカンマで条件を列挙するとOR判定になる。

・Select Case にはショートサーキットが使える。ただしORの時。
If True Or (x > 1) Then     '//これはショートサーキットされない
Case True, x > 1            '//これはショートサーキットされる

・Select Caseで柔軟な条件判定をさせたい⇒Trueを使う
Select Case True
    Case s = "リンゴ"
        MsgBox "sはリンゴ"
    Case s Like "リンゴ*"
        MsgBox "sはリンゴで始まる"
    Case Else
        MsgBox "どの条件にも当てはまらない"
End Select
(各Caseの後にいろんな記述ができる)

・例その他:
Select Case wsAL.Cells(i, 部名の列).Value
    Case "○○部"
        Fax番号 = FAX○○部
    Case "△△部"
        Fax番号 = FAX△△部
    Case "□□部"
        Fax番号 = FAX□□部
End Select


◆ Not を使ったスイッチ
・ Not を使えばオン/オフのスイッチ的なものが作れる
With Columns("D")
    .Hidden = Not .Hidden
End With
(もともと.Hiddenに入っていたbool値をNotで反転させて再代入)

 



コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。