<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Select Case &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/select-case/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Mar 2026 22:49:28 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>Select Case &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VBA Select Case文の使い方｜条件分岐を見やすく整理する基本と実務パターン</title>
		<link>https://mashukabu.com/excel-vba-howto-use-select-case/</link>
					<comments>https://mashukabu.com/excel-vba-howto-use-select-case/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 01 Jan 2022 13:08:01 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[Case Is]]></category>
		<category><![CDATA[If文]]></category>
		<category><![CDATA[Select Case]]></category>
		<category><![CDATA[Select Case True]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[条件分岐]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=685</guid>

					<description><![CDATA[VBA Select Case文の使い方を基本構文から実務コードまで丁寧に解説。Is・To・カンマによる条件指定パターンやIf文との使い分け、よくあるエラーの対処法まで網羅しています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「If文の条件分岐、5個も6個も並んでごちゃごちゃ&#8230;&#8230;」</p>



<p class="wp-block-paragraph">そんな経験、ありませんか？ ElseIfを何段にも重ねていくと、コードはどんどん読みづらくなりますよね。修正しようとしても、どこがどの条件なのかパッと見で分からなくなってしまいます。</p>



<p class="wp-block-paragraph">でも大丈夫です。VBAの <strong>Select Case文</strong> を使えば、条件分岐をスッキリ整理できます。この記事では基本構文から実務で使えるコードまで、まとめて解説していきますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Select Case文とは？If文との違い</a><ol><li><a href="#toc2" tabindex="0">Select Caseの基本構文</a></li><li><a href="#toc3" tabindex="0">If文と比べたメリット</a></li></ol></li><li><a href="#toc4" tabindex="0">Select Caseの条件指定パターン</a><ol><li><a href="#toc5" tabindex="0">単一値の指定</a></li><li><a href="#toc6" tabindex="0">範囲指定（To）</a></li><li><a href="#toc7" tabindex="0">比較演算子（Is）</a></li><li><a href="#toc8" tabindex="0">複数条件の組み合わせ（カンマ区切り）</a></li></ol></li><li><a href="#toc9" tabindex="0">コピペで動く基本コード</a><ol><li><a href="#toc10" tabindex="0">VBEの開き方</a></li><li><a href="#toc11" tabindex="0">テストの点数で分岐する例</a></li><li><a href="#toc12" tabindex="0">コードの解説</a></li></ol></li><li><a href="#toc13" tabindex="0">実務で使えるSelect Caseコード</a><ol><li><a href="#toc14" tabindex="0">部署コードに応じてシート名を返す</a></li><li><a href="#toc15" tabindex="0">Select Case Trueで複雑な条件を整理する</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc17" tabindex="0">Case Elseの書き忘れ</a></li><li><a href="#toc18" tabindex="0">型の不一致エラー</a></li></ol></li><li><a href="#toc19" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Select Case文とは？If文との違い</span></h2>



<p class="wp-block-paragraph">Select Case文は、VBAで <strong>「1つの値に対して複数の条件に分岐する」</strong> ための構文です。</p>



<p class="wp-block-paragraph">たとえば「テストの点数によってメッセージを変えたい」というとき、If文だとElseIfが何段にもなります。Select Case文なら、条件をスッキリ並べて書けるんです。</p>



<h3 class="wp-block-heading"><span id="toc2">Select Caseの基本構文</span></h3>



<p class="wp-block-paragraph">まずは基本の書き方を見てみましょう。</p>



<pre class="wp-block-code"><code>Sub sample()
    Select Case 条件式
        Case 条件1
            '--- 条件式の結果が条件1に合致したときの処理 ---
        Case 条件2
            '--- 条件式の結果が条件2に合致したときの処理 ---
        Case Else
            '--- どの条件にも合致しなかったときの処理 ---
    End Select
End Sub</code></pre>



<p class="wp-block-paragraph">仕組みをかんたんに説明すると、こんな流れです。</p>



<ol class="wp-block-list"><li><code>Select Case</code> の後ろに書いた条件式が評価される</li><li>上から順番にCaseの値と比較していく</li><li>最初に一致したCaseの処理だけが実行される</li><li>どのCaseにも一致しなければ <code>Case Else</code> の処理が実行される</li></ol>



<p class="wp-block-paragraph">条件式には変数を入れてもいいですし、計算式を書くこともできます。文字列・数値・日付など、基本的なデータ型はどれでも使えますよ。</p>



<p class="wp-block-paragraph">ポイントは「<strong>最初に一致したCaseだけ実行される</strong>」ということです。他の言語にはフォールスルー（次のCaseにも処理が流れる）がありますが、VBAにはその心配がありません。</p>



<h3 class="wp-block-heading"><span id="toc3">If文と比べたメリット</span></h3>



<p class="wp-block-paragraph">同じ処理をIf文とSelect Caseで書き比べてみましょう。</p>



<p class="wp-block-paragraph"><strong>If文で書いた場合</strong></p>



<pre class="wp-block-code"><code>If 点数 &gt;= 90 Then
    MsgBox &quot;素晴らしい！&quot;
ElseIf 点数 &gt;= 70 Then
    MsgBox &quot;よくできました&quot;
ElseIf 点数 &gt;= 50 Then
    MsgBox &quot;もう少しがんばろう&quot;
Else
    MsgBox &quot;追試です&quot;
End If</code></pre>



<p class="wp-block-paragraph"><strong>Select Caseで書いた場合</strong></p>



<pre class="wp-block-code"><code>Select Case 点数
    Case Is &gt;= 90
        MsgBox &quot;素晴らしい！&quot;
    Case 70 To 89
        MsgBox &quot;よくできました&quot;
    Case 50 To 69
        MsgBox &quot;もう少しがんばろう&quot;
    Case Else
        MsgBox &quot;追試です&quot;
End Select</code></pre>



<p class="wp-block-paragraph">条件が3つ、4つと増えてくるとSelect Caseの方がかなり読みやすくなります。使い分けの目安は以下のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>条件の数</th><th>おすすめの書き方</th></tr></thead><tbody><tr><td>2つ以下</td><td>If文で十分</td></tr><tr><td>3つ以上</td><td>Select Caseがスッキリ</td></tr><tr><td>条件式が複数の変数にまたがる</td><td>If文の方が柔軟</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-vba-conditional-branch-explanation/">VBA If文の使い方</a>をまだ学んでいない方は、先にそちらを読んでおくとスムーズに理解できますよ。なお、VBAではなくワークシート関数で条件分岐するなら<a href="https://mashukabu.com/excel-function-howto-use-switch/">ExcelのSWITCH関数</a>も便利です。</p>



<h2 class="wp-block-heading"><span id="toc4">Select Caseの条件指定パターン</span></h2>



<p class="wp-block-paragraph">Select Case文では、Caseの書き方にいくつかのパターンがあります。これを覚えておくと、かなり柔軟な条件分岐ができるようになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc5">単一値の指定</span></h3>



<p class="wp-block-paragraph">もっともシンプルなパターンです。特定の値にぴったり一致したときだけ処理を実行します。</p>



<pre class="wp-block-code"><code>Select Case 曜日
    Case &quot;月&quot;
        MsgBox &quot;週の始まりです&quot;
    Case &quot;金&quot;
        MsgBox &quot;もうすぐ週末です&quot;
    Case &quot;土&quot;, &quot;日&quot;
        MsgBox &quot;お休みです&quot;
End Select</code></pre>



<p class="wp-block-paragraph">文字列でも数値でも、同じ書き方で使えます。</p>



<h3 class="wp-block-heading"><span id="toc6">範囲指定（To）</span></h3>



<p class="wp-block-paragraph">「この値からこの値まで」という範囲を指定するには <strong>To</strong> を使います。</p>



<pre class="wp-block-code"><code>Select Case 年齢
    Case 0 To 12
        MsgBox &quot;子供料金&quot;
    Case 13 To 17
        MsgBox &quot;学生料金&quot;
    Case 18 To 64
        MsgBox &quot;大人料金&quot;
    Case Is &gt;= 65
        MsgBox &quot;シニア料金&quot;
End Select</code></pre>



<p class="wp-block-paragraph"><code>To</code> の左側に小さい値、右側に大きい値を書くのがルールです。逆にすると正しく動作しないので注意してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc7">比較演算子（Is）</span></h3>



<p class="wp-block-paragraph">「○○以上」「○○以下」といった比較には <strong>Is</strong> キーワードを使います。</p>



<pre class="wp-block-code"><code>Select Case 売上
    Case Is &gt;= 1000000
        MsgBox &quot;目標達成！&quot;
    Case Is &gt;= 500000
        MsgBox &quot;あと少し！&quot;
    Case Else
        MsgBox &quot;がんばりましょう&quot;
End Select</code></pre>



<p class="wp-block-paragraph">ちなみに、Caseの後に <code><= 9</code> のように比較演算子だけ書いても、VBAが自動的に <code>Is</code> を補完してくれます。なので忘れても大丈夫ですが、最初から書いておいた方がコードの意図が明確になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">複数条件の組み合わせ（カンマ区切り）</span></h3>



<p class="wp-block-paragraph">1つのCaseに複数の条件を書きたいときは、<strong>カンマ</strong> で区切ります。To や Is と組み合わせることも可能です。</p>



<pre class="wp-block-code"><code>Select Case 月
    Case 3, 4, 5
        MsgBox &quot;春です&quot;
    Case 6, 7, 8
        MsgBox &quot;夏です&quot;
    Case 9, 10, 11
        MsgBox &quot;秋です&quot;
    Case 12, 1, 2
        MsgBox &quot;冬です&quot;
End Select</code></pre>



<p class="wp-block-paragraph"><code>Case 1 To 4, 7 To 9, 11, 13</code> のように、範囲指定と単一値をまとめて書くこともできます。複雑に見えますが、「カンマで区切れば何でもOR条件にできる」と覚えておけばOKです。</p>



<p class="wp-block-paragraph">条件指定パターンを表にまとめておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>パターン</th><th>書き方の例</th><th>意味</th></tr></thead><tbody><tr><td>単一値</td><td><code>Case 10</code></td><td>10に一致</td></tr><tr><td>複数値</td><td><code>Case 1, 3, 5</code></td><td>1か3か5に一致</td></tr><tr><td>範囲</td><td><code>Case 1 To 10</code></td><td>1から10の範囲</td></tr><tr><td>比較演算子</td><td><code>Case Is >= 100</code></td><td>100以上</td></tr><tr><td>組み合わせ</td><td><code>Case 1 To 5, 10, Is >= 20</code></td><td>1~5、10、20以上のいずれか</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc9">コピペで動く基本コード</span></h2>



<p class="wp-block-paragraph">ここからは、実際にコピペして動かせるコードを紹介していきます。VBE（Visual Basic Editor）を開いて、標準モジュールに貼り付けてみてください。</p>



<h3 class="wp-block-heading"><span id="toc10">VBEの開き方</span></h3>



<p class="wp-block-paragraph">VBEを開くには以下のいずれかの方法を使います。</p>



<ul class="wp-block-list"><li><strong>ショートカットキー</strong>: Alt + F11 を押す（最も手軽）</li><li><strong>リボンから</strong>: 「開発」タブ →「Visual Basic」をクリック</li></ul>



<p class="wp-block-paragraph">「開発」タブが表示されていない場合は、以下の手順で追加できます。</p>



<ol class="wp-block-list"><li>リボンの何もない場所を右クリック →「リボンのユーザー設定」を選択</li><li>右側の一覧で「開発」にチェックを入れて「OK」をクリック</li></ol>



<p class="wp-block-paragraph">VBEが開いたら、「挿入」メニュー →「標準モジュール」を選択してください。コードの貼り付け先ができます。<a href="https://mashukabu.com/excel-vba-variable-explanation/">変数の基本的な使い方</a>がまだ分からない方は、先にそちらを確認しておくとコードの理解がスムーズです。</p>



<h3 class="wp-block-heading"><span id="toc11">テストの点数で分岐する例</span></h3>



<pre class="wp-block-code"><code>Sub テスト判定()
    Dim 点数 As Long '点数を入れる変数
    点数 = InputBox(&quot;点数を入力してください&quot;)

    Select Case 点数
        Case Is &lt;= 30
            MsgBox &quot;追試です......がんばりましょう&quot;
        Case 31 To 49
            MsgBox &quot;もう少しで合格です！&quot;
        Case 50 To 70
            MsgBox &quot;合格！油断せずにいきましょう&quot;
        Case 71 To 99
            MsgBox &quot;素晴らしい結果です！&quot;
        Case 100
            MsgBox &quot;満点！パーフェクトです！&quot;
        Case Else
            MsgBox &quot;正しい点数を入力してください&quot;
    End Select
End Sub</code></pre>



<h3 class="wp-block-heading"><span id="toc12">コードの解説</span></h3>



<p class="wp-block-paragraph">処理の流れを順番に見ていきましょう。</p>



<ol class="wp-block-list"><li><code>InputBox</code> でユーザーに点数を入力してもらう</li><li>入力された値が <code>点数</code> 変数に代入される</li><li><code>Select Case 点数</code> で分岐処理が始まる</li><li>上から順にCase条件と照合していく</li><li>一致したCaseのメッセージが表示される</li><li>想定外の値（負の数など）は <code>Case Else</code> で処理する</li></ol>



<p class="wp-block-paragraph"><code>Case Else</code> を入れておくと、想定外の入力があっても処理が止まりません。実務ではエラー防止のために、<strong>Case Elseは常に書いておく</strong> のがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc13">実務で使えるSelect Caseコード</span></h2>



<p class="wp-block-paragraph">基本を押さえたところで、実際の業務で使えるコードを見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc14">部署コードに応じてシート名を返す</span></h3>



<p class="wp-block-paragraph">たとえば、売上データの部署コードに応じて処理先のシートを切り替えるケースです。</p>



<pre class="wp-block-code"><code>Sub 部署振り分け()
    Dim i As Long         '行カウンター
    Dim lastRow As Long   '最終行
    Dim 部署コード As String  '判定対象
    Dim 振り分け先 As String  '出力する部署名

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row '最終行を取得

    For i = 2 To lastRow
        部署コード = Cells(i, 1).Value

        Select Case 部署コード
            Case &quot;A01&quot;, &quot;A02&quot;
                振り分け先 = &quot;営業部&quot;
            Case &quot;B01&quot;, &quot;B02&quot;, &quot;B03&quot;
                振り分け先 = &quot;経理部&quot;
            Case &quot;C01&quot;
                振り分け先 = &quot;人事部&quot;
            Case Else
                振り分け先 = &quot;その他&quot;
        End Select

        Cells(i, 2).Value = 振り分け先
    Next i

    MsgBox &quot;振り分け完了！&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">このコードでは、<a href="https://mashukabu.com/excel-vba-howto-use-for/">For文によるループ処理</a>と組み合わせて、A列の部署コードを1行ずつ判定しています。<a href="https://mashukabu.com/excel-vba-howto-get-lastrow/">最終行の取得</a>を使っているので、データ件数が変わっても自動で対応できますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">Select Case Trueで複雑な条件を整理する</span></h3>



<p class="wp-block-paragraph">実は、Select Caseには少し変わった使い方があります。<code>Select Case True</code> と書くと、各Caseに条件式そのものを書けるんです。</p>



<pre class="wp-block-code"><code>Sub 在庫アラート()
    Dim 在庫数 As Long  '現在の在庫数
    Dim 単価 As Long    '商品単価

    在庫数 = Range(&quot;B2&quot;).Value  '--- B2セルの値を取得 ---
    単価 = Range(&quot;C2&quot;).Value    '--- C2セルの値を取得 ---

    Select Case True
        Case 在庫数 = 0
            MsgBox &quot;在庫切れです！至急発注してください&quot;
        Case 在庫数 &lt;= 10 And 単価 &gt;= 5000
            MsgBox &quot;高額商品の在庫が少なくなっています&quot;
        Case 在庫数 &lt;= 10
            MsgBox &quot;在庫が少なくなっています&quot;
        Case Else
            MsgBox &quot;在庫は十分です&quot;
    End Select
End Sub</code></pre>



<p class="wp-block-paragraph"><code>Select Case True</code> では、各Caseの条件式が <code>True</code> になるかどうかで分岐します。複数の変数を組み合わせた条件も書けるので、If文の代わりに使うことで見通しの良いコードになります。セルの値を取得する<a href="https://mashukabu.com/excel-vba-howto-use-range/">Rangeオブジェクトの使い方</a>も合わせて覚えておくと、実務で役立ちますよ。</p>



<p class="wp-block-paragraph">ちょっとむずかしく見えますが、やっていることはシンプルです。「Trueに一致するCase = 条件式がTrueになるCase」を上から探しているだけです。</p>



<h2 class="wp-block-heading"><span id="toc16">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">Select Case文を使っていて遭遇しやすいエラーをまとめました。</p>



<h3 class="wp-block-heading"><span id="toc17">Case Elseの書き忘れ</span></h3>



<p class="wp-block-paragraph">Case Elseを省略しても構文エラーにはなりません。ただし、どのCaseにも一致しない値が来たとき、<strong>何の処理も実行されずに素通り</strong> してしまいます。</p>



<pre class="wp-block-code"><code>'--- 悪い例：Case Elseがない ---
Select Case ステータス
    Case &quot;完了&quot;
        '--- 完了処理 ---
    Case &quot;進行中&quot;
        '--- 進行中の処理 ---
End Select
'→ 「未着手」が来ると何も起きない！</code></pre>



<p class="wp-block-paragraph">バグの原因になりやすいので、実務コードでは必ず <code>Case Else</code> を書きましょう。想定外の値をキャッチできます。</p>



<h3 class="wp-block-heading"><span id="toc18">型の不一致エラー</span></h3>



<p class="wp-block-paragraph">Select Caseの条件式が数値なのに、Caseに文字列を指定してしまうと、意図どおりに動作しません。</p>



<pre class="wp-block-code"><code>Dim 数値 As Long
数値 = 10

'--- 悪い例：数値なのに文字列で比較している ---
Select Case 数値
    Case &quot;10&quot;   '← 文字列の&quot;10&quot;
        MsgBox &quot;一致&quot;  'ここには来ない！
End Select</code></pre>



<p class="wp-block-paragraph">変数の型とCaseの値の型を揃えるのがポイントです。セルの値を使うときは、<code>CLng()</code> や <code>CStr()</code> で明示的に型変換しておくと安心ですよ。</p>



<p class="wp-block-paragraph">エラーパターンを表にまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー内容</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>処理が実行されない</td><td>Case Elseがなく、一致するCaseもない</td><td>Case Elseを必ず書く</td></tr><tr><td>型の不一致</td><td>条件式とCaseの値の型が違う</td><td>CLng()やCStr()で型を揃える</td></tr><tr><td>「End Select に対応する Select がありません」</td><td>Select Case と End Select の対応漏れ</td><td>インデントを整えて対応を確認</td></tr><tr><td>Toの範囲が動かない</td><td>小さい値 To 大きい値の順になっていない</td><td>左に小さい値、右に大きい値を書く</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">マクロを保存するときはファイル形式に注意してください。<strong>「Excelマクロ有効ブック（.xlsm）」</strong> を選びましょう。通常の .xlsx で保存すると、書いたマクロが消えてしまいます。</p>



<h2 class="wp-block-heading"><span id="toc19">まとめ</span></h2>



<p class="wp-block-paragraph">この記事では、VBAのSelect Case文について基本から実務活用まで解説しました。</p>



<p class="wp-block-paragraph">ポイントをおさらいしておきましょう。</p>



<ul class="wp-block-list"><li>Select Case文は <strong>「1つの値に対して複数条件に分岐」</strong> したいときに最適</li><li>条件指定は <strong>単一値・To（範囲）・Is（比較）・カンマ（複数）</strong> の4パターン</li><li><strong>Case Else</strong> は省略せずに必ず書く（想定外の値のキャッチ）</li><li><strong>Select Case True</strong> を使えば、複数変数にまたがる複雑な条件分岐もスッキリ書ける</li><li>条件が3つ以上ならSelect Case、2つ以下なら<a href="https://mashukabu.com/excel-vba-conditional-branch-explanation/">If文</a>が使いやすい</li></ul>



<p class="wp-block-paragraph">Select Caseをうまく使えると、コードの見通しがぐっと良くなります。まずはこの記事のサンプルコードをコピーして動かしてみてください。自分で書いて動かしてみると、理解が深まりますよ。</p>



<p class="wp-block-paragraph">条件分岐をマスターしたら、次は<a href="https://mashukabu.com/excel-vba-howto-use-for/">For文でのループ処理</a>や<a href="https://mashukabu.com/excel-vba-like-wildcard/">Like演算子でのパターンマッチング</a>にも挑戦してみてくださいね。VBAの学習全体の進め方については<a href="https://mashukabu.com/excel-vba-learning-roadmap/">VBA学習の順番とロードマップ</a>も参考にしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vba-howto-use-select-case/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
