【脱・ごちゃごちゃコード】無限のIF文にさようなら!Select Caseで「読みやすい」コードに変える方法

【業務効率化】VBA
スポンサーリンク

この記事が解決する悩み

  • 「IF文が重なって、どこを見ているかわからなくなる」というパニック
  • 後から条件を追加するときに「壊してしまいそう」という不安
  • 「もっとスマートに書きたいけれど、やり方がわからない」という劣等感

IF文地獄から抜け出そう

「もしAなら〇〇、そうでなくてBなら△△、さらにCなら…」

こんなふうに条件が増えていくと、コードを見ているだけで頭が痛くなりませんか?これを「ネスト(入れ子)」と呼びますが、深くなればなるほどミスが増え、修正が怖くなります。

そこで役立つのがSelect Case文です。

これは、「ある一つの値」に対して、「これの場合は?」「あれの場合は?」とリストのように条件を並べる書き方です。

【業務効率化】VBAの記事を見る

圧倒的に読みやすい!魔法の構文

IF文だと毎回「もし~なら」と書きますが、Select Caseは「この箱の中身をチェック!」と一度宣言するだけ。あとは中身ごとの処理を書けばいいので、見た目が驚くほどスッキリします。

イメージで言うと、こうです。

  • IF文: 毎回立ち止まって地図を確認する迷路。
  • Select Case文: 行き先別に看板が立っているターミナル駅。

コピペで使える!実践コード(Excel VBA)

今回は、営業事務でよくある「売上などの点数に応じて評価(ランク)をつける」コード書いてみました。

Sub CheckScore()
    Dim score As Long
    Dim result As String
   
    ' テスト用に点数を入れます(実際はセルの値などを入れます)
    score = 85

    ' ▼ ここからが Select Case ▼
    ' score という値についてチェックします!
    Select Case score
       
        ' 100点の場合
        Case 100
            result = "満点!素晴らしい!"
           
        ' 80点から99点の場合(Toを使えば範囲も指定できます)
        Case 80 To 99
            result = "合格ラインです"
           
        ' 60点から79点の場合
        Case 60 To 79
            result = "もう少し頑張りましょう"
           
        ' 上記以外のすべての場合
        Case Else
            result = "再テストが必要です"
           
    End Select
    ' ▲ ここまで ▲

    ' 結果を表示
    MsgBox "判定結果: " & result

End Sub

Select Caseなら面倒な「後付け」も簡単!

このコードの素晴らしいところは、「後から条件が増えても怖くない」ことです。

例えば「90点以上の条件を追加したい」と思った時、IF文だとカッコの数を数え直したりする必要がありますが、Select Caseなら行を挿入するだけ。

コードが整理されていると、ミスをする確率がグッと減ります。それはつまり、「エラーに怯える時間」が減るということです。

まずは身近なExcel作業で、小さな条件分岐から試してみていただければと思います。

きれいに書けると気持ち良いですよ!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました