2022年11月28日月曜日

【マクロVBA】VBA_TIPS-02 Select文とIf文

今回はSelect文とIf文の使い分けについて話します。

例えばAの値に2が入っているとして、このAの値によって処理を変えるとします。
これをSelect文で表現すると
A = "こんにちは"
Select Case A
    Case "おはよう"
        MsgBox "Aはおはようです"
    Case "こんにちは"
        MsgBox "Aはこんにちはです"
    Case "こんばんわ"
        MsgBox "Aはこんばんわです"
    Case "おやすみなさい"
        MsgBox "Aはおやすみなさいです"
    Case Else
        MsgBox "Aはそれ以外です"
End Select
となります。If文で表現すると
A = "こんにちは"
If A = "おはよう" Then
    MsgBox "Aはおはようです"
ElseIf A = "こんにちは" Then
    MsgBox "Aはこんにちはです"
ElseIf A = "こんばんわ" Then
    MsgBox "Aはこんばんわです"
ElseIf A = "おやすみなさい" Then
    MsgBox "Aはおやすみなさいです"
Else
    MsgBox "Aはそれ以外です"
End If
となります。

どちらで書いても結果は
メッセージボックス Aはこんにちはです

で変わりません。
ではSelect文とIf文をどのように使い分ければよいのか?どちらを使うべきなのか?ですが、Select文を使えるのであればSelect文のほうが処理が速いので良い。という話を聞いたことがあります。
恐らく今のPC性能だとあまり気にする差ではないと思いますが、私はたまに100万行とかのCSVファイルを扱うときがあるので、なるべくSelect文を使うようにしています。

ではSelect文とIf文の明確な違いは何か?ですが、
Select:変数は1つしかできない
If   :変数を複数使うことができる
ですね。

Select文の場合はAの値から選ぶしかできず、例えば
Select Case A
とした場合、
Case A="こんにちは"
だとAがこんにちはのとき
Case A<>"こんにちは"
だとAがこんにちはでないとき
という感じでSelect Caseで決めたものに対して選ぶことしかできません。

逆にIf文を使うと
A = "こんにちは"
B = "こんにちわ"
If A = "おはよう" Then
    MsgBox "Aはおはようです"
ElseIf A = "こんにちは" And B = "こんにちわ" Then
    MsgBox "AもBもこんにちはです"
Else
    MsgBox "Aはそれ以外です"
End If
のように1つのIf文で複数の変数から条件を設定することが可能です。

このようにSelect文とIf文の違いを理解しておくことで、場面場面によって最適なやり方を考えることができるようになります。




0 件のコメント:

コメントを投稿