<?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>無限ループ &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%E7%84%A1%E9%99%90%E3%83%AB%E3%83%BC%E3%83%97/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Mar 2026 22:49:37 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>無限ループ &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Excelマクロが止まらない時の強制終了4ステップ</title>
		<link>https://mashukabu.com/how-to-stop-macro/</link>
					<comments>https://mashukabu.com/how-to-stop-macro/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 18 Dec 2021 09:00:00 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[DoEvents]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[VBE]]></category>
		<category><![CDATA[トラブルシューティング]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[強制終了]]></category>
		<category><![CDATA[無限ループ]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=554</guid>

					<description><![CDATA[Excelマクロが止まらない時の強制終了方法をWindows・Mac別に解説。Escキーからタスクマネージャーまで4段階の対処法と、VBEのBreak Mode・リセットボタンの違い、無限ループを防ぐVBAコードも紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「マクロを実行したら、画面が固まって動かない……」</p>



<p>VBAを使っていると、こんな場面に出くわすことがありますよね。無限ループにハマったときは、本当に焦ります。データがどんどん上書きされていくのを見ているしかない……。</p>



<p>でも安心してください。Excelマクロの強制終了には、確実な手順があります。この記事では、<strong>4ステップで段階的に止める方法</strong>を解説します。キーボード操作から最終手段まで、順番に試せば必ず止められますよ。</p>



<p>さらに後半では、暴走を防ぐ予防策もVBAコード付きで紹介します。</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">Excelマクロが強制終了できない状況とは？</a><ol><li><a href="#toc2" tabindex="0">こんな時に強制終了が必要になる</a></li><li><a href="#toc3" tabindex="0">この記事の4ステップの流れ</a></li></ol></li><li><a href="#toc4" tabindex="0">Excelマクロを強制終了する方法【4ステップ】</a><ol><li><a href="#toc5" tabindex="0">ステップ1: Escキー・Ctrl+Breakで停止する（Win/Mac）</a></li><li><a href="#toc6" tabindex="0">ステップ1.5: VBEのリセットボタンで停止する</a></li><li><a href="#toc7" tabindex="0">ステップ2: 応答なしダイアログから終了する</a></li><li><a href="#toc8" tabindex="0">ステップ3: タスクマネージャー／アクティビティモニタで強制終了する</a></li></ol></li><li><a href="#toc9" tabindex="0">マクロが止まらなくなる原因を知っておこう</a><ol><li><a href="#toc10" tabindex="0">無限ループ（Do Loop / For文の終了条件ミス）</a></li><li><a href="#toc11" tabindex="0">大量データ処理による長時間実行</a></li><li><a href="#toc12" tabindex="0">ScreenUpdating=Falseによる見た目フリーズ</a></li></ol></li><li><a href="#toc13" tabindex="0">再発防止策：VBAマクロの暴走を防ぐ3つのコード</a><ol><li><a href="#toc14" tabindex="0">実行前にファイルを自動保存する</a></li><li><a href="#toc15" tabindex="0">ループにカウンター上限を設定する（If文活用）</a></li><li><a href="#toc16" tabindex="0">DoEventsでEscキーを受け付けるようにする</a></li></ol></li><li><a href="#toc17" tabindex="0">よくあるトラブルと対処法Q&A</a><ol><li><a href="#toc18" tabindex="0">EscもCtrl+Breakも効かない場合</a></li><li><a href="#toc19" tabindex="0">タスクマネージャーすら開かない場合</a></li><li><a href="#toc20" tabindex="0">強制終了後にファイルが破損していた場合</a></li></ol></li><li><a href="#toc21" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Excelマクロが強制終了できない状況とは？</span></h2>



<h3 class="wp-block-heading"><span id="toc2">こんな時に強制終了が必要になる</span></h3>



<p>通常、マクロは処理が完了すると自動的に終了します。しかし、次のケースでは手動で止める必要があります。</p>



<ul class="wp-block-list"><li>無限ループに入り、処理が永遠に終わらない</li><li>想定外のセル範囲を処理していて、データが壊れそう</li><li>処理に時間がかかりすぎて、他の作業ができない</li></ul>



<p>こうした場面で慌てないために、止め方を知っておくことが大切です。</p>



<h3 class="wp-block-heading"><span id="toc3">この記事の4ステップの流れ</span></h3>



<p>本記事では、<strong>簡単な方法から順番に</strong>4つのステップで解説します。</p>



<figure class="wp-block-table"><table><thead><tr><th>ステップ</th><th>方法</th><th>難易度</th></tr></thead><tbody><tr><td>ステップ1</td><td>Escキー・Ctrl+Breakで停止</td><td>まずはこれを試す</td></tr><tr><td>ステップ1.5</td><td>VBEのリセットボタンで停止</td><td>Break後の完全終了に</td></tr><tr><td>ステップ2</td><td>応答なしダイアログから終了</td><td>Excelごと閉じる</td></tr><tr><td>ステップ3</td><td>タスクマネージャーで強制終了</td><td>最終手段</td></tr></tbody></table></figure>



<p>まずステップ1を試してください。ダメなら次の段階へ進む流れです。</p>



<h2 class="wp-block-heading"><span id="toc4">Excelマクロを強制終了する方法【4ステップ】</span></h2>



<h3 class="wp-block-heading"><span id="toc5">ステップ1: Escキー・Ctrl+Breakで停止する（Win/Mac）</span></h3>



<p>最もシンプルな方法です。マクロの処理が重くなければ、キーボードだけで止められます。</p>



<h4 class="wp-block-heading">Windowsの場合</h4>



<figure class="wp-block-table"><table><thead><tr><th>ショートカット</th><th>説明</th></tr></thead><tbody><tr><td>Esc</td><td>最も基本的な中断キー。まずはこれを試す</td></tr><tr><td>Ctrl + Break（Pause）</td><td>Escで止まらないときに使う</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">Macの場合</h4>



<figure class="wp-block-table"><table><thead><tr><th>ショートカット</th><th>説明</th></tr></thead><tbody><tr><td>Command + .（ピリオド）</td><td>Mac版Excelの標準的な中断コマンド</td></tr><tr><td>Esc</td><td>Command+.で反応しないときに試す</td></tr></tbody></table></figure>



<p><strong>ポイント</strong>: 1回押しただけでは反応しないことがあります。処理が重いとキー入力の受付が遅れます。<strong>連打するか長押し</strong>して粘り強く試してみてください。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>ノートPCではBreakキーが見当たらないことがあります。その場合は「Fn + B」や「Fn + Ctrl + B」など、機種によって異なります。お使いのPCの取扱説明書を確認してみてください。</p></blockquote>



<p>停止に成功すると、VBEが開いてコードが黄色くハイライトされます。これがBreak Mode（中断モード）です。この状態では変数の値が保持されています。F5キーで処理を続行することもできます。</p>



<p>ただし、<strong>完全に終了したい場合</strong>は次のステップ1.5へ進んでください。</p>



<h3 class="wp-block-heading"><span id="toc6">ステップ1.5: VBEのリセットボタンで停止する</span></h3>



<p>ステップ1でBreak Modeに入ったあと、<strong>完全に終了する</strong>方法です。ここが意外と見落とされがちなポイントです。</p>



<p>VBE（Visual Basic Editor）の画面上部にある<strong>リセットボタン（■）</strong>をクリックしてください。メニューからは「実行」→「リセット」でも同じ操作ができます。</p>



<p><a href="https://mashukabu.com/excel-vba-vbe-menu-explanation/">VBEの画面と各メニューの見方</a>を確認しておくと、ボタンの位置がすぐにわかりますよ。</p>



<h4 class="wp-block-heading">Break ModeとDesign Timeの違い</h4>



<p>Ctrl+BreakとリセットボタンではVBEの状態が異なります。この違いを知っておくと、デバッグ時に役立ちます。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>Break Mode（中断モード）</th><th>Design Time（デザインタイム）</th></tr></thead><tbody><tr><td>操作</td><td>Esc / Ctrl+Break</td><td>リセットボタン / 実行→リセット</td></tr><tr><td>変数の値</td><td>保持される</td><td>すべてリセットされる</td></tr><tr><td>処理の続行</td><td>F5で続行可能</td><td>不可（最初からやり直し）</td></tr><tr><td>ステップ実行</td><td>F8で1行ずつ実行可能</td><td>不可</td></tr><tr><td>用途</td><td>デバッグ・途中確認</td><td>完全に停止したいとき</td></tr></tbody></table></figure>



<p>「とにかく止めたい」ならリセットボタンを押しましょう。「原因を調べたい」ならBreak Modeのまま、<a href="https://mashukabu.com/excel-vbe-immediate-window-explanation/">イミディエイトウィンドウの使い方</a>で変数の値を確認するのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc7">ステップ2: 応答なしダイアログから終了する</span></h3>



<p>キーボードで止まらない場合、Excelが「応答なし」になることがあります。</p>



<p>このとき、固まったExcelの画面をクリックしてみてください。Windowsが警告メッセージを表示することがあります。<strong>「プログラムを終了します」を選択</strong>すれば、Excelごと終了できます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>WARNING</strong></p><p>アプリケーション自体を終了させるため、<strong>保存していないデータは消えます</strong>。マクロ実行前にファイルを保存しておく習慣をつけましょう。</p></blockquote>



<p>ただし、「応答なし」に見えても実際には処理中のケースがあります。VBAの <code>Application.ScreenUpdating = False</code> で画面更新を止めているだけかもしれません。</p>



<p><strong>見分け方</strong>: ステータスバー（Excel画面の左下）を確認してください。処理状況が表示されていれば、マクロはまだ動いています。しばらく待ってみるのも手です。</p>



<h3 class="wp-block-heading"><span id="toc8">ステップ3: タスクマネージャー／アクティビティモニタで強制終了する</span></h3>



<p>ここまでの方法で止まらなければ、OSからアプリごと終了させます。これが最終手段です。</p>



<h4 class="wp-block-heading">Windowsの場合（タスクマネージャー）</h4>



<ol class="wp-block-list"><li><strong>Ctrl + Shift + Esc</strong> でタスクマネージャーを起動する</li><li>「プロセス」タブで <strong>Microsoft Excel</strong> を探す</li><li>選択して <strong>[タスクの終了]</strong> をクリックする</li></ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Ctrl + Shift + Escで開かない場合は、<strong>Ctrl + Alt + Delete</strong>からタスクマネージャーを選択してください。</p></blockquote>



<h4 class="wp-block-heading">Macの場合（アプリケーションの強制終了）</h4>



<ol class="wp-block-list"><li><strong>Command + Option + Esc</strong> で強制終了画面を開く</li><li><strong>Microsoft Excel</strong> を選択する</li><li><strong>[強制終了]</strong> をクリックする</li></ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>WARNING</strong></p><p>ステップ2・3ではExcel自体を終了させます。<strong>保存前のデータはすべて失われます</strong>。重要なファイルを扱うときは、マクロ実行前の保存を徹底してください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc9">マクロが止まらなくなる原因を知っておこう</span></h2>



<p>そもそも、なぜマクロが止まらなくなるのでしょうか？原因を知っておけば、同じトラブルを防げます。</p>



<h3 class="wp-block-heading"><span id="toc10">無限ループ（Do Loop / For文の終了条件ミス）</span></h3>



<p>最も多い原因がこれです。<a href="https://mashukabu.com/how-to-use-do-loop/">Do&#8230;Loop文の使い方</a>や<a href="https://mashukabu.com/excel-vba-howto-use-for/">For〜Next文の使い方</a>で、終了条件が正しく設定されていないと無限に繰り返されます。</p>



<pre class="wp-block-code"><code>'--- 無限ループの例（カウンターが更新されない） ---
Sub InfiniteLoopExample()
    Dim i As Long 'カウンター変数
    i = 1
    Do While i &lt;= 10
        Cells(i, 1).Value = i
        '--- i = i + 1 を書き忘れると無限ループ ---
    Loop
End Sub</code></pre>



<p>上のコードでは <code>i = i + 1</code> を書き忘れています。<code>i</code> がずっと1のままなので、<code>Do While i <= 10</code> が永遠にTrueです。セルA1に1を書き込み続けてしまいます。</p>



<h3 class="wp-block-heading"><span id="toc11">大量データ処理による長時間実行</span></h3>



<p>無限ループではなく、データ量が多すぎるケースです。たとえば10万行のデータを1セルずつ処理すると、数分〜数十分かかることがあります。</p>



<p>この場合、強制終了せず完了を待つのが正解かもしれません。ステータスバーで進捗を確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc12">ScreenUpdating=Falseによる見た目フリーズ</span></h3>



<p>VBAで高速化のために <code>Application.ScreenUpdating = False</code> を使うと、処理中は画面が更新されません。見た目は完全にフリーズしたように見えます。でも裏では正常に処理が進んでいることがあります。</p>



<p><code>ScreenUpdating</code> はマクロが正常終了しても自動でTrueに戻りません。強制終了した場合はなおさらです。コードの最後に必ず <code>Application.ScreenUpdating = True</code> を書いておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc13">再発防止策：VBAマクロの暴走を防ぐ3つのコード</span></h2>



<p>強制終了の方法を知っておくのも大事です。でも、そもそも暴走しないようにするのがベストですよね。ここでは実務で使える予防策を3つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc14">実行前にファイルを自動保存する</span></h3>



<p>最もシンプルで最も大切な対策です。マクロ実行前に<strong>ファイルを上書き保存</strong>しておきましょう。</p>



<p>強制終了すると保存前のデータは消えます。でも直前に保存しておけば、その時点に戻れます。VBAコードに自動保存を組み込むのがおすすめです。</p>



<pre class="wp-block-code"><code>'--- マクロ実行前に自動保存するコード ---
Sub SaveBeforeRun()
    ThisWorkbook.Save '現在のブックを上書き保存
    MsgBox &quot;保存が完了しました。処理を開始します。&quot;
    '--- ここから実際の処理を記述 ---
End Sub</code></pre>



<h3 class="wp-block-heading"><span id="toc15">ループにカウンター上限を設定する（If文活用）</span></h3>



<p><a href="https://mashukabu.com/how-to-use-do-loop/">Do...Loop文の使い方</a>を使うときは、カウンター上限を設定すると安心です。終了条件にバグがあっても、上限で止まります。</p>



<pre class="wp-block-code"><code>'--- カウンター上限付きのDo Loopコード ---
Sub SafeLoopExample()
    Dim i As Long       'カウンター変数
    Dim maxCount As Long '上限回数
    maxCount = 100000
    i = 1

    Do While i &lt;= 10
        Cells(i, 1).Value = i
        i = i + 1

        '--- 安全装置: 上限を超えたら強制終了 ---
        If i &gt; maxCount Then
            MsgBox &quot;処理回数が上限(&quot; &amp; maxCount &amp; _
                   &quot;回)を超えました。処理を中断します。&quot;
            Exit Do
        End If
    Loop
End Sub</code></pre>



<p><a href="https://mashukabu.com/excel-vba-conditional-branch-explanation/">If文（条件分岐）の使い方</a>で上限チェックを入れるのがポイントです。無限ループが起きても自動的に止まります。<code>maxCount</code> の値は処理内容に応じて調整してください。</p>



<h3 class="wp-block-heading"><span id="toc16">DoEventsでEscキーを受け付けるようにする</span></h3>



<p><code>DoEvents</code> は、VBAの処理中にOSへ制御を戻す関数です。これをループに入れておくと、処理中でもEscキーを受け付けてくれます。</p>



<pre class="wp-block-code"><code>'--- DoEventsを使ったEsc受付コード ---
Sub DoEventsExample()
    Dim i As Long 'カウンター変数

    For i = 1 To 100000
        Cells(i, 1).Value = i

        '--- 100回ごとにOSへ制御を戻す ---
        If i Mod 100 = 0 Then
            DoEvents
        End If
    Next i
End Sub</code></pre>



<p><code>DoEvents</code> を毎回呼ぶと処理速度が落ちます。上の例のように <code>If i Mod 100 = 0</code> で<strong>100回に1回だけ実行</strong>するのがコツです。</p>



<p>これを入れておけば、「Escが効かない」というトラブルを大幅に減らせますよ。</p>



<h2 class="wp-block-heading"><span id="toc17">よくあるトラブルと対処法Q&A</span></h2>



<h3 class="wp-block-heading"><span id="toc18">EscもCtrl+Breakも効かない場合</span></h3>



<p>処理が重すぎてキー入力を受け付けていない可能性があります。以下を順番に試してみてください。</p>



<ol class="wp-block-list"><li><strong>Escキーを連打</strong>する（1回では反応しないことが多い）</li><li>Windowsの場合は <strong>Ctrl + Break</strong> を試す</li><li>それでもダメなら<strong>タスクマネージャー</strong>で強制終了する</li></ol>



<p>次回からはVBAコードに <code>DoEvents</code> を入れましょう。Escキーが効きやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc19">タスクマネージャーすら開かない場合</span></h3>



<p>Excelの処理がPCのリソースを使い切っている可能性があります。</p>



<ol class="wp-block-list"><li>しばらく待ってみる（1〜2分程度）</li><li><strong>Ctrl + Alt + Delete</strong> 画面を開く（優先度が高い）</li><li>最終手段として<strong>PCの電源ボタンを長押し</strong>する</li></ol>



<p>電源ボタン長押しはすべてのデータが失われます。本当の最終手段として考えてください。</p>



<h3 class="wp-block-heading"><span id="toc20">強制終了後にファイルが破損していた場合</span></h3>



<p>Excelには自動回復（AutoRecover）機能があります。強制終了後にExcelを再度開くと、「ドキュメントの回復」パネルが表示されることがあります。最新のバージョンを選択して復元しましょう。</p>



<p>自動回復の設定は<strong>ファイル → オプション → 保存</strong>で確認できます。デフォルトでは10分間隔です。VBA作業が多い方は<strong>5分間隔</strong>に短縮しておくのがおすすめですよ。</p>



<p>Break Modeで停止できた場合は、<a href="https://mashukabu.com/excel-vbe-immediate-window-explanation/">イミディエイトウィンドウの使い方</a>を使って変数の状態を確認しましょう。原因の特定に役立ちます。</p>



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



<p>この記事では、Excelマクロを強制終了する方法を4ステップで解説しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>ステップ</th><th>方法</th><th>Windows</th><th>Mac</th></tr></thead><tbody><tr><td>1</td><td>キーボードで停止</td><td>Esc / Ctrl+Break</td><td>Command+. / Esc</td></tr><tr><td>1.5</td><td>VBEリセットボタン</td><td>リセットボタン（■）</td><td>同左</td></tr><tr><td>2</td><td>ダイアログから終了</td><td>応答なし→終了</td><td>—</td></tr><tr><td>3</td><td>OSから強制終了</td><td>Ctrl+Shift+Esc</td><td>Command+Option+Esc</td></tr></tbody></table></figure>



<p>まずステップ1のキーボード操作を試しましょう。ダメなら段階的にステップ2、3へ進むのがポイントです。</p>



<p>そして何より大切なのは<strong>マクロ実行前の保存</strong>です。ループにカウンター上限を設定したり、<code>DoEvents</code> を入れておくと暴走を未然に防げます。</p>



<p>トラブルを根本から減らすにはVBAの基本構文の理解が近道です。<a href="https://mashukabu.com/excel-vba-learning-roadmap/">VBA学習のロードマップ</a>を参考にしてみてください。まだマクロを触り始めたばかりの方は、<a href="https://mashukabu.com/howto-macro-recording/">マクロの記録の使い方</a>から始めるのもおすすめですよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/how-to-stop-macro/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
