<?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>If文 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/if%e6%96%87/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Mar 2026 22:49:49 +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>If文 &#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>
		<item>
		<title>VBA If文の使い方｜条件分岐を基本から実務コードまで解説</title>
		<link>https://mashukabu.com/excel-vba-conditional-branch-explanation/</link>
					<comments>https://mashukabu.com/excel-vba-conditional-branch-explanation/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 14 Nov 2021 08:04:42 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[And Or]]></category>
		<category><![CDATA[Else]]></category>
		<category><![CDATA[ElseIf]]></category>
		<category><![CDATA[If文]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[条件分岐]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=351</guid>

					<description><![CDATA[VBA If文の使い方を基本構文から実務コードまで解説します。ElseIf・Elseの書き方、複数条件（And/Or）、Select Caseとの使い分け、よくあるエラーの対処法まで網羅。コピペで動くサンプルコード付きです。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「VBAのIf文って、なんだか難しそう&#8230;&#8230;」</p>



<p class="wp-block-paragraph">そう思って手が止まっていませんか？ VBAの条件分岐はプログラミングの基本中の基本です。しかし初めて見ると記号や英語の羅列に見えて、つい身構えてしまいますよね。</p>



<p class="wp-block-paragraph">でも安心してください。If文の仕組みは、実は日常会話とほとんど同じです。この記事ではVBA If文の基本構文から実務で使えるコードまで、一つずつ丁寧に解説していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">VBA If文（条件分岐）とは？</a></li><li><a href="#toc2" tabindex="0">VBEの起動とコードの書き方</a><ol><li><a href="#toc3" tabindex="0">VBEの開き方</a></li><li><a href="#toc4" tabindex="0">標準モジュールの挿入</a></li></ol></li><li><a href="#toc5" tabindex="0">If文の基本構文（コピペで動くコード）</a><ol><li><a href="#toc6" tabindex="0">Ifだけのシンプルな分岐</a></li><li><a href="#toc7" tabindex="0">If&#8230;Else（2択の分岐）</a></li><li><a href="#toc8" tabindex="0">If&#8230;ElseIf&#8230;Else（3つ以上の分岐）</a></li></ol></li><li><a href="#toc9" tabindex="0">If文の実践コード（業務で使えるバージョン）</a><ol><li><a href="#toc10" tabindex="0">セルの値で処理を分岐する例</a></li><li><a href="#toc11" tabindex="0">複数条件を組み合わせる（And / Or）</a></li></ol></li><li><a href="#toc12" tabindex="0">If文とSelect Caseの使い分け</a></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc14" tabindex="0">End Ifの書き忘れ</a></li><li><a href="#toc15" tabindex="0">比較演算子のミス</a></li><li><a href="#toc16" tabindex="0">型の不一致</a></li></ol></li><li><a href="#toc17" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBA If文（条件分岐）とは？</span></h2>



<p class="wp-block-paragraph">条件分岐とは、<strong>条件に応じて処理を切り替える仕組み</strong>のことです。</p>



<p class="wp-block-paragraph">日常で例えるとこんな感じです。</p>



<p class="wp-block-paragraph">「明日晴れたらピクニックに行こう。くもりだったら映画にして、雨だったら家でのんびりしよう」</p>



<p class="wp-block-paragraph">この会話、無意識に条件分岐をしていますよね。「天気」という条件によって「行き先」という処理を変えているわけです。</p>



<p class="wp-block-paragraph">VBAのIf文も、やっていることはまったく同じです。「もし○○だったら△△する、そうでなければ□□する」をコードで書いているだけなんですよ。</p>



<h2 class="wp-block-heading"><span id="toc2">VBEの起動とコードの書き方</span></h2>



<p class="wp-block-paragraph">If文を試すには、まずVBE（Visual Basic Editor）を開く必要があります。VBEの画面構成について詳しく知りたい方は、<a href="https://mashukabu.com/excel-vba-vbe-menu-explanation/">VBEの画面の見方を図解で解説</a>もあわせてどうぞ。</p>



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



<p class="wp-block-paragraph">一番かんたんな方法は、Excelを開いた状態で <strong>Alt + F11</strong> キーを押すことです。</p>



<p class="wp-block-paragraph">開発タブが表示されていない場合でも、このショートカットなら直接VBEを開けます。開発タブを表示させたい場合は「ファイル」→「オプション」→「リボンのユーザー設定」へ進みましょう。そこで「開発」にチェックを入れてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc4">標準モジュールの挿入</span></h3>



<p class="wp-block-paragraph">VBEが開いたら、コードを書く場所を用意します。</p>



<p class="wp-block-paragraph">メニューの「挿入」→「標準モジュール」を選んでください。白い画面が表示されたら、そこにコードを貼り付けて実行できます。</p>



<p class="wp-block-paragraph">実行方法は <strong>F5キー</strong> を押すか、メニューの「実行」→「Sub/ユーザーフォームの実行」を選びます。</p>



<h2 class="wp-block-heading"><span id="toc5">If文の基本構文（コピペで動くコード）</span></h2>



<p class="wp-block-paragraph">ここからは、実際にコピペして動かせるコードで解説していきます。</p>



<h3 class="wp-block-heading"><span id="toc6">Ifだけのシンプルな分岐</span></h3>



<p class="wp-block-paragraph">まずは一番シンプルな形です。「条件に合ったときだけ処理する」パターンです。</p>



<pre class="wp-block-code"><code>Sub シンプルなIf()
    Dim 天気 As String '--- 天気を入れる変数 ---
    天気 = &quot;晴れ&quot;

    If 天気 = &quot;晴れ&quot; Then
        MsgBox &quot;ピクニックに出かけよう！&quot;
    End If
End Sub</code></pre>



<p class="wp-block-paragraph">日本語に置き換えると、こうなります。</p>



<ul class="wp-block-list"><li><code>If</code> → もし</li><li><code>天気 = "晴れ"</code> → 天気が「晴れ」だったら</li><li><code>Then</code> → そのときは</li><li><code>End If</code> → ここまで</li></ul>



<p class="wp-block-paragraph">ポイントは <strong>If で始めたら、必ず End If で閉じる</strong> ことです。これを忘れるとエラーになるので、Ifを書いたらすぐにEnd Ifも書いておくのがおすすめです。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-vba-variable-explanation/">変数（Dim）の使い方</a>がまだよく分からないという方は、先にそちらの記事を読んでおくとスムーズですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">If&#8230;Else（2択の分岐）</span></h3>



<p class="wp-block-paragraph">次は「条件に合ったらAの処理、合わなかったらBの処理」という2択パターンです。</p>



<pre class="wp-block-code"><code>Sub 二択の分岐()
    Dim 天気 As String '--- 天気を入れる変数 ---
    天気 = &quot;雨&quot;

    If 天気 = &quot;晴れ&quot; Then
        MsgBox &quot;ピクニックに出かけよう！&quot;
    Else
        MsgBox &quot;家でのんびり過ごそう&quot;
    End If
End Sub</code></pre>



<p class="wp-block-paragraph"><code>Else</code> は「その他」という意味です。If の条件に合わなかった場合、すべてここに流れてきます。</p>



<p class="wp-block-paragraph">このコードでは天気が「雨」なので、Else側の「家でのんびり過ごそう」が表示されます。天気を「晴れ」に書き換えて実行すると、結果が変わりますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">If&#8230;ElseIf&#8230;Else（3つ以上の分岐）</span></h3>



<p class="wp-block-paragraph">条件を3つ以上に分けたいときは <code>ElseIf</code> を使います。冒頭の天気の例をそのままコードにしてみましょう。</p>



<pre class="wp-block-code"><code>Sub 天気で行き先を決める()
    Dim 天気 As String '--- 天気を入れる変数 ---
    天気 = &quot;くもり&quot;

    If 天気 = &quot;晴れ&quot; Then
        MsgBox &quot;ピクニックに出かけよう！&quot;
    ElseIf 天気 = &quot;くもり&quot; Then
        MsgBox &quot;映画を見に行こう&quot;
    Else
        MsgBox &quot;家でのんびり過ごそう&quot;
    End If
End Sub</code></pre>



<p class="wp-block-paragraph">処理の流れを整理しておきます。</p>



<ol class="wp-block-list"><li>まず <code>If</code> の条件をチェック（天気 = &#8220;晴れ&#8221;？）</li><li>合わなければ <code>ElseIf</code> の条件をチェック（天気 = &#8220;くもり&#8221;？）</li><li>どれにも合わなければ <code>Else</code> の処理を実行</li></ol>



<p class="wp-block-paragraph"><code>ElseIf</code> は何個でも追加できます。ただし、<strong>最初の条件は必ず <code>If</code></strong> で書く必要があります。<code>ElseIf</code> だけで始めることはできないので注意してくださいね。</p>



<p class="wp-block-paragraph">If文の3つのパターンを表にまとめておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>パターン</th><th>書き方</th><th>使いどころ</th></tr></thead><tbody><tr><td>If&#8230;End If</td><td>条件に合ったときだけ処理</td><td>1つの条件だけチェックしたいとき</td></tr><tr><td>If&#8230;Else&#8230;End If</td><td>2択の分岐</td><td>「はい/いいえ」で処理を分けたいとき</td></tr><tr><td>If&#8230;ElseIf&#8230;Else&#8230;End If</td><td>3つ以上の分岐</td><td>条件ごとに違う処理をしたいとき</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc9">If文の実践コード（業務で使えるバージョン）</span></h2>



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



<h3 class="wp-block-heading"><span id="toc10">セルの値で処理を分岐する例</span></h3>



<p class="wp-block-paragraph">たとえば、テストの点数がセルに入力されていて、隣のセルに判定結果を書き込みたい場合です。A列に点数が入っていて、B列に判定を出力します。</p>



<pre class="wp-block-code"><code>Sub テスト判定()
    Dim i As Long       '--- 行カウンター ---
    Dim lastRow As Long '--- 最終行 ---
    Dim 点数 As Long    '--- 判定対象の点数 ---

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

    For i = 2 To lastRow '--- 2行目（データ開始行）から最終行まで ---
        点数 = Cells(i, 1).Value

        If 点数 &gt;= 80 Then
            Cells(i, 2).Value = &quot;合格&quot;
        ElseIf 点数 &gt;= 60 Then
            Cells(i, 2).Value = &quot;追試&quot;
        Else
            Cells(i, 2).Value = &quot;不合格&quot;
        End If
    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>



<p class="wp-block-paragraph">セルの指定方法について詳しくは、<a href="https://mashukabu.com/excel-vba-howto-use-range/">Rangeの使い方</a>で解説しています。</p>



<h3 class="wp-block-heading"><span id="toc11">複数条件を組み合わせる（And / Or）</span></h3>



<p class="wp-block-paragraph">「点数が80点以上<strong>かつ</strong>出席率が90%以上のとき合格」のように、複数の条件を同時にチェックしたい場合は <strong>And</strong> や <strong>Or</strong> を使います。</p>



<pre class="wp-block-code"><code>Sub 複数条件の判定()
    Dim 点数 As Long   '--- テストの点数 ---
    Dim 出席率 As Long '--- 出席率（%） ---

    点数 = Range(&quot;A2&quot;).Value
    出席率 = Range(&quot;B2&quot;).Value

    If 点数 &gt;= 80 And 出席率 &gt;= 90 Then
        MsgBox &quot;合格です！&quot;
    ElseIf 点数 &gt;= 80 Or 出席率 &gt;= 90 Then
        MsgBox &quot;条件付き合格です&quot;
    Else
        MsgBox &quot;残念ですが不合格です&quot;
    End If
End Sub</code></pre>



<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>And</td><td>両方の条件がTrueのとき</td><td>点数 >= 80 And 出席率 >= 90</td></tr><tr><td>Or</td><td>どちらかの条件がTrueのとき</td><td>点数 >= 80 Or 出席率 >= 90</td></tr><tr><td>Not</td><td>条件を反転させる</td><td>Not 点数 >= 80（80点未満のとき）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">And と Or を同じIf文に混ぜるときは、括弧 <code>()</code> で優先順位を明確にしましょう。括弧がないと、意図しない判定になることがあります。</p>



<p class="wp-block-paragraph">文字列のパターンで条件を分岐したい場合は、<a href="https://mashukabu.com/excel-vba-like-wildcard/">Like演算子</a>を使う方法もあります。ワイルドカードで柔軟な文字列比較ができるので、あわせてチェックしてみてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc12">If文とSelect Caseの使い分け</span></h2>



<p class="wp-block-paragraph">VBAにはIf文のほかに、<strong>Select Case文</strong>という条件分岐の方法もあります。</p>



<p class="wp-block-paragraph">どちらを使うか迷ったときの目安はこちらです。</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>1つの値に対して3つ以上の分岐</td><td>Select Caseがスッキリ</td></tr><tr><td>複数の変数を同時に判定</td><td>If文（And/Or）の方が柔軟</td></tr><tr><td>範囲で分岐したい（○○以上など）</td><td>どちらでもOK</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">たとえば、さきほどの天気の例のように「1つの変数の値で3つ以上に分岐する」場合は、Select Caseで書くとコードが見やすくなります。</p>



<p class="wp-block-paragraph">Select Case文の詳しい使い方は、<a href="https://mashukabu.com/excel-vba-howto-use-select-case/">Select Case文で条件分岐を見やすく書く方法</a>で解説しています。あわせて読んでみてくださいね。</p>



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



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



<h3 class="wp-block-heading"><span id="toc14">End Ifの書き忘れ</span></h3>



<p class="wp-block-paragraph">一番多いのがこのエラーです。「<strong>コンパイル エラー: End If に対応する If がありません</strong>」と表示されます。</p>



<pre class="wp-block-code"><code>'--- 悪い例：End Ifがない ---
Sub エラー例1()
    If Range(&quot;A1&quot;).Value &gt; 0 Then
        MsgBox &quot;正の数です&quot;
    '--- ここにEnd Ifが必要！ ---
End Sub</code></pre>



<p class="wp-block-paragraph">If文が入れ子（ネスト）になっていると、どのIfにEnd Ifが対応しているか分かりにくくなります。<strong>Ifを書いたらすぐにEnd Ifも書く</strong>習慣をつけると、このエラーを防げますよ。</p>



<p class="wp-block-paragraph">なお、変数の宣言忘れによるバグを防ぐには、<a href="https://mashukabu.com/excel-vba-option-explicit/">Option Explicitの設定</a>がおすすめです。コードの先頭に1行書いておくだけで、未宣言の変数をエラーで知らせてくれます。</p>



<h3 class="wp-block-heading"><span id="toc15">比較演算子のミス</span></h3>



<p class="wp-block-paragraph">「等しい」を表す <code>=</code> と「代入」の <code>=</code> を混同するケースです。VBAではどちらも <code>=</code> を使います。If文の中では比較として扱われるので、実は心配不要です。</p>



<p class="wp-block-paragraph">ただし、文字列を比較するときに <code>=</code> ではなく <code>==</code> と書いてしまうのはNGです。VBAには <code>==</code> という演算子はありません。</p>



<pre class="wp-block-code"><code>'--- 悪い例：==はVBAでは使えない ---
If 天気 == &quot;晴れ&quot; Then  '← コンパイルエラー！</code></pre>



<h3 class="wp-block-heading"><span id="toc16">型の不一致</span></h3>



<p class="wp-block-paragraph">セルの値を数値として比較したいのに、セルに文字列が入っているとエラーになることがあります。</p>



<pre class="wp-block-code"><code>'--- 安全な書き方：IsNumericで事前チェック ---
If IsNumeric(Range(&quot;A1&quot;).Value) Then
    If CLng(Range(&quot;A1&quot;).Value) &gt;= 80 Then
        MsgBox &quot;合格&quot;
    End If
Else
    MsgBox &quot;数値を入力してください&quot;
End If</code></pre>



<p class="wp-block-paragraph"><code>IsNumeric</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>End Ifに対応するIfがありません</td><td>End Ifの書き忘れ</td><td>Ifを書いたらすぐEnd Ifも書く</td></tr><tr><td>構文エラー</td><td>==の使用、Thenの書き忘れ</td><td>=を使う、Thenを忘れずに書く</td></tr><tr><td>型の不一致</td><td>文字列と数値の比較</td><td>IsNumericで事前チェック</td></tr><tr><td>処理が通らない</td><td>ElseIfの条件が前のIfと重複</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="toc17">まとめ</span></h2>



<p class="wp-block-paragraph">この記事では、VBA If文の使い方を基本から実務コードまで解説しました。</p>



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



<ul class="wp-block-list"><li>If文は <strong>「もし○○だったら△△する」</strong> という条件分岐の基本構文</li><li><strong>If / ElseIf / Else</strong> の3つを組み合わせて、複数の条件を処理できる</li><li>複数の条件を同時にチェックするには <strong>And / Or</strong> 演算子を使う</li><li>条件が3つ以上で1つの値の分岐なら、<a href="https://mashukabu.com/excel-vba-howto-use-select-case/">Select Case文</a>の方がスッキリ書ける</li><li><strong>If を書いたら End If もセットで書く</strong>（エラー防止の基本）</li></ul>



<p class="wp-block-paragraph">条件分岐はVBAの中でもっともよく使う構文です。まずはこの記事のサンプルコードをコピーして、実際に動かしてみてください。変数の値を変えて結果がどう変わるか試してみると、理解がぐっと深まりますよ。</p>



<p class="wp-block-paragraph">If文を使いこなせるようになったら、<a href="https://mashukabu.com/excel-vba-howto-use-for/">For文でのループ処理</a>や<a href="https://mashukabu.com/how-to-use-do-loop/">Do Loopでの繰り返し処理</a>にも挑戦してみてくださいね。VBAの学習全体の進め方を知りたい方は、<a href="https://mashukabu.com/excel-vba-learning-roadmap/">VBAを学習する順番と心構え</a>を参考にしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vba-conditional-branch-explanation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
