なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

現役インフラエンジニアが教えるVBA講座~5.条件分岐

f:id:nazuna_0124:20170406201732p:plain

ひぃぃぃいいい!!!

背中がぞわぞわする


こっそり講座名変えてみました。

苦手な単語が2つも入ってます



インフラエンジニアがいまだにしっくりきません。

だって名刺に書いてあるもん!!

そういってるのは私じゃないのでいいとして。



教えるってのがすごく苦手です。

いつもは知見共有とか言い始めます。


がんばって慣れます。

おつかれさまです。なずなです。



本日はいつ書いたか忘れた講座のつづき。

こういうのは他の方が詳しくやってくれてるので

ぐぐってください


5.条件分岐

人はなぜプログラムを使うのか!
条件の判断を何回やっても間違えることがないから!!

というわけで条件の分岐方法です。

○○だったらXXXするというやつですね。

国語ないしは数学(論理?)が必要な分野でもあります。
なにはともあれ純粋な書き方から。


if 条件 then

end if

です。Select case 文は当面おぼえなくていいです(キッパリ


かつ、または、の演算子はAnd と or なのでVBAはわかりやすいです。

if 条件 and 条件2 then


elseif 条件3 then


else


end if


ざっくりとした書き方はこんな漢字。

数字の条件分岐

これまでの九九は使ってオッケーです。
シートに入力しておきましょう。

ちょー基本というやつです。九九の表で奇数だけ色を変える
処理を作ってみましょう。

書き方いろいろありますからね!

'
Sub OddNumInQuQu() Dim r As Range

    For Each r In Worksheets("Sheet1").Range("A1:I9")

        If r.Value Mod 2 = 1 Then
            r.Interior.Color = vbYellow         
        End If
    Next
End Sub


ここでついでに覚えてください。
VBAで加えた変更はCtrl + Z で戻りません!!

変更する前にちゃんと保存しましょう。


さて、次です。
九九なので当然すべてが数字なんですが、
適当なマスに「ああ」でも「b」でも文字列いれて再度実行してください。


エラーがでて起こられます。
ローカルウィンドウとか見てください。

みたまんま、文字列は割った余りとか計算できないということです。


ここでは軽く覚えてください。
**想定した「データ形式」でないと正常に動かない場合がある。**

そういうときはどうするか。
今回は数字であればよいので数字かどうかを判定します。


ここからぐぐってオッケー。
判定用の関数があるのでそれを使います。


```VB

Sub OddNumInQuQu2()
    Dim r As Range

    For Each r In Worksheets("Sheet1").Range("A1:I9")
        If IsNumeric(r.Value) = True Then
            If r.Value Mod 2 = 1 Then
                r.Interior.Color = vbYellow

            End If
        End If
    Next

End Sub

```

ifが1個追加されました。
これを入れ子っていいます。

条件に一致したものがどんどん中に入っていくイメージです。



↑ココマデ



冒頭でも若干触れてますけど、なぜプログラムにするのか!!

書いたとおりの条件分岐は間違えないからです。


ここではまだ覚えなくていいです。


確認するデータの型が違う、そもそも条件間違ってるなど

プログラマ本人は間違えるってことだけ!