もしも○○の時【Select Case】
条件分岐の方法として、Ifをよく使うと思うのですが、複数の条件がある時、まとめて簡単に記載できるのは、Select Caseの方なのです。ではSelect Caseのコードの例を見てみましょう
Select Case Range("A1").Value
Case "○"
MsgBox "○が記載されています。"
Case "□"
MsgBox "□が記載されています。"
Case "△"
MsgBox "△が記載されています。"
Case "×"
MsgBox "×が記載されています。"
Case Else
MsgBox "空白です。"
End Select
このコードを記載し、A1のセルにどれかの図形を入力して実行してみてください。そうすると入力したのと同じ図形の「記載されています。」のメッセージボックスが出てくると思います。
このSelect CaseはどのCaseの条件に当てはまるかで、どの処理をするか決めるようになっています。
では解説してきます。
Select Case Range("A1").Value
これは「A1のセルに対してのケースをこれから先のCaseから選びますよ」という宣言だと思ってください。
Select Caseの後にIfでいうところの左辺を記載してあげるのです。
「If Range("A1").Value = "○" Then」
この赤文字部分と同じ意味です。
Case "○"
これは「A1のセル=○の時」の部分になります。
つまりIfでいうところの右辺ですね。
「If Range("A1").Value = "○" Then」
この赤文字の部分です。
MsgBox "○が記載されています。"
この部分はCaseの条件がTrueだった時に実行される部分です。
ということはIfでいうところのThenの後の処理ですね。
これは簡単ですよね?笑
このCase ~ 処理内容の部分を複数段重ねて、「このCaseの場合、この処理を実行」という風にコードを組み立てます。
Case Else
この部分はIfでもあったように、「Else=どれにも当てはまらなかった時」を意味します。
Case Elseは、使用する時に条件が全て決まっていて、条件に当てはまらないことがない場合は使わなくてもいいですが、何かしら条件に当てはまらない時というのは出てくることも多いと思うので、是非忘れないようにして下さい。
End Select
最後にEndで閉じてあげて終了になります。
このEndの表記は、End Selectが正しいので、End Select Caseと記述しないように注意してくださいね。
このSelect Caseをワークシートイベントと合わせて使うと非常に便利な機能などが作れるのです。
ChangeイベントとSelect Case
その便利な機能として、「入力した文字を特定の文字列に変換する」というコードを紹介しようと思います。Private Sub Worksheet_Change(ByVal Target As Range)
Dim com As Object
Set com = Intersect(Columns(1), Target)
If com Is Nothing Then
Exit Sub
Else
Select Case com.Value
Case "1"
com.Value = "A社"
Case "2"
com.Value = "B社"
Case "3"
com.Value = "C社"
Case "4"
com.Value = "D社"
End Select
End If
End Sub
このコードはA列のセルに1を入力するとA社と変更され、2と入力するとB社と変更されます。なのでこのコードを応用すると、管理コードがある会社等では、「管理コードを入れると会社名を表示する」というな処理が出来るようになるのです。
ただし、入力したセルの値を変更する場合、Case Elseを付けてしまうと、変換された値がCaseと一致しないので、Case Elseを強制で実行してしまうので注意が必要です。
また、管理コードの横に会社名を入れたい場合は、【com.Offset(0, 1).Value】のように変更してあげるだけで、隣に会社名が出るようになります。
こういう機能は条件付書式でも出来るじゃん?って意見も多いかと思いますが、編集する時には条件付書式で何度も編集するより、VBAに2行追加したら修正が出来る方がいいですよね?
それにせっかくVBAを勉強するなら練習がてらマクロを組んでみるのもいいと思います。
最後に
Ifの方が使い慣れてる場合、Select CaseをIfに当てはめて覚えると覚えやすいと思います。Ifに当てはめて覚えるなら、Select Caseの行に左辺を記載、Caseの行に右辺を記載という風に覚えるとわかりやすいと思います。
マクロが上達するコツは、とにかくコーディングすることです。
普段は数式などで作っていたこともマクロで組んで勉強してみてくださいね。