<?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/%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Mon, 13 Apr 2026 13:10:19 +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>VBAマクロのエラー解決ガイド｜実行時エラー13・1004・9など頻出エラー別の直し方</title>
		<link>https://mashukabu.com/vba-error-guide/</link>
					<comments>https://mashukabu.com/vba-error-guide/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 13 Apr 2026 12:42:37 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[エラー]]></category>
		<category><![CDATA[デバッグ]]></category>
		<category><![CDATA[トラブルシューティング]]></category>
		<category><![CDATA[マクロ]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5981</guid>

					<description><![CDATA[VBAマクロで頻出する実行時エラー（13・1004・9・91・438など）を番号別に解説。原因・発生パターン・修正コードをセットで紹介し、On Error構文やデバッグ手順までまとめました。]]></description>
										<content:encoded><![CDATA[
<p>VBAでマクロを書いていると、いきなり赤い画面で「実行時エラー」と表示されて慌てた経験、誰にでもあると思います。しかも番号だけ出て意味がわからない、英語で説明されても何を直せばいいか見当がつかない、というケースが多いですよね。</p>



<p>この記事では、VBAマクロで特に頻出する実行時エラーを <strong>番号ごとに原因・発生パターン・修正コード</strong> の3点セットで整理しました。併せて、エラーが出たときの定番の調べ方（ステップ実行・イミディエイトウィンドウ）や、<code>On Error</code> 構文を使ったエラーハンドリングの基本もまとめています。</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">VBAの実行時エラーとは｜まずは全体像を押さえる</a></li><li><a href="#toc2" tabindex="0">実行時エラー 13｜型の不一致（Type mismatch）</a><ol><li><a href="#toc3" tabindex="0">原因と典型パターン</a></li><li><a href="#toc4" tabindex="0">直し方</a></li></ol></li><li><a href="#toc5" tabindex="0">実行時エラー 1004｜アプリケーション定義またはオブジェクト定義のエラー</a><ol><li><a href="#toc6" tabindex="0">典型パターン 1: シート名が間違っている</a></li><li><a href="#toc7" tabindex="0">典型パターン 2: Range の引数が不正</a></li><li><a href="#toc8" tabindex="0">典型パターン 3: 保護されたシートに書き込み</a></li><li><a href="#toc9" tabindex="0">典型パターン 4: Cells の引数が範囲外</a></li></ol></li><li><a href="#toc10" tabindex="0">実行時エラー 9｜インデックスが有効範囲にありません</a><ol><li><a href="#toc11" tabindex="0">典型パターン</a></li><li><a href="#toc12" tabindex="0">直し方</a></li></ol></li><li><a href="#toc13" tabindex="0">実行時エラー 91｜オブジェクト変数または With ブロック変数が設定されていません</a><ol><li><a href="#toc14" tabindex="0">典型パターン</a></li><li><a href="#toc15" tabindex="0">直し方</a></li></ol></li><li><a href="#toc16" tabindex="0">実行時エラー 438｜オブジェクトはこのプロパティまたはメソッドをサポートしていません</a><ol><li><a href="#toc17" tabindex="0">典型パターン</a></li><li><a href="#toc18" tabindex="0">直し方</a></li></ol></li><li><a href="#toc19" tabindex="0">実行時エラー 424｜オブジェクトが必要です</a></li><li><a href="#toc20" tabindex="0">実行時エラー 6｜オーバーフロー</a></li><li><a href="#toc21" tabindex="0">エラーが出たときのデバッグ手順</a><ol><li><a href="#toc22" tabindex="0">1. ステップ実行（F8キー）</a></li><li><a href="#toc23" tabindex="0">2. イミディエイトウィンドウ（Ctrl + G）</a></li><li><a href="#toc24" tabindex="0">3. ブレークポイント（F9キー）</a></li></ol></li><li><a href="#toc25" tabindex="0">On Error 構文によるエラーハンドリング</a><ol><li><a href="#toc26" tabindex="0">On Error GoTo ラベル</a></li><li><a href="#toc27" tabindex="0">On Error Resume Next</a></li></ol></li><li><a href="#toc28" tabindex="0">エラーを減らすための予防策</a></li><li><a href="#toc29" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBAの実行時エラーとは｜まずは全体像を押さえる</span></h2>



<p>VBAのエラーは大きく3種類あります。</p>



<ol class="wp-block-list"><li><strong>コンパイルエラー</strong>: マクロを実行する前、VBEが構文を解析した時点で出るエラー。「構文エラー」「変数が定義されていません」など。</li><li><strong>実行時エラー</strong>: マクロを実行した途中で発生するエラー。この記事で主に扱う「実行時エラー 13」などがこれです。</li><li><strong>論理エラー</strong>: エラーメッセージは出ないが結果が想定と違うバグ。</li></ol>



<p>実行時エラーが厄介なのは、「コードの書き方」ではなく「実行時のデータ・環境」によって発生するため、書いたときには気づけないという点です。たとえば、開発中は問題なくても、他の人がシートを編集した瞬間に壊れることがあります。</p>



<p>実行時エラーが出たときは、<strong>黄色くハイライトされた行</strong> が原因箇所です。「デバッグ」ボタンを押すとその行で一時停止するので、まずはその行で何が起きているかを確認するのが第一歩になります。</p>



<h2 class="wp-block-heading"><span id="toc2">実行時エラー 13｜型の不一致（Type mismatch）</span></h2>



<p>VBAで最も頻繁に目にするエラーが、この「型の不一致」です。ある型を期待している場所に別の型の値を渡そうとしたときに発生します。</p>



<h3 class="wp-block-heading"><span id="toc3">原因と典型パターン</span></h3>



<pre class="wp-block-code"><code>Dim i As Long
i = Range(&quot;A1&quot;).Value  ' A1に &quot;りんご&quot; と入っているとエラー13</code></pre>



<p>数値型の変数に文字列を入れようとした、というのがもっとも典型的なパターンです。他にも次のような状況で発生します。</p>



<ul class="wp-block-list"><li>セルにエラー値（<code>#N/A</code>、<code>#VALUE!</code> など）が入っている状態で、そのセルを数値変数に代入した</li><li><code>CInt</code> / <code>CLng</code> / <code>CDbl</code> に変換不可能な文字列を渡した（例: <code>CInt("abc")</code>）</li><li>配列が必要な場所にスカラー値を渡した</li></ul>



<h3 class="wp-block-heading"><span id="toc4">直し方</span></h3>



<p>セルの値を数値として扱いたい場合は、事前に <strong>IsNumeric で検査</strong> してから代入するのが定石です。</p>



<pre class="wp-block-code"><code>Dim v As Variant
v = Range(&quot;A1&quot;).Value
If IsNumeric(v) Then
    Dim i As Long
    i = CLng(v)
Else
    MsgBox &quot;A1が数値ではありません: &quot; &amp; v
End If</code></pre>



<p>また、エラー値が混ざる可能性があるセルは <code>IsError</code> で事前チェックしましょう。</p>



<pre class="wp-block-code"><code>If Not IsError(Range(&quot;A1&quot;).Value) Then
    i = Range(&quot;A1&quot;).Value
End If</code></pre>



<p>ポイントは、<strong>Variantでいったん受けてから判定 → 変換</strong> という流れです。直接 Long 型に代入しようとすると、そこで処理が止まってしまいます。</p>



<h2 class="wp-block-heading"><span id="toc5">実行時エラー 1004｜アプリケーション定義またはオブジェクト定義のエラー</span></h2>



<p>エラー1004は「Excelに何かを頼んだけど、その頼み方が正しくない」ときに出ます。メッセージが曖昧なので原因の特定が難しい、VBAでもトップクラスに悩まされるエラーです。</p>



<h3 class="wp-block-heading"><span id="toc6">典型パターン 1: シート名が間違っている</span></h3>



<pre class="wp-block-code"><code>Worksheets(&quot;売上&quot;).Range(&quot;A1&quot;).Value = 100  ' &quot;売上&quot;シートが存在しないとエラー1004</code></pre>



<p>シートをリネームしたのにコード側を直し忘れた、というよくあるパターンです。<code>Worksheets("名前")</code> は該当シートがないと即座に1004になります。</p>



<p><strong>直し方</strong>: シート存在チェックを関数化しておくと安全です。</p>



<pre class="wp-block-code"><code>Function SheetExists(name As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = ThisWorkbook.Worksheets(name)
    On Error GoTo 0
    SheetExists = Not ws Is Nothing
End Function</code></pre>



<h3 class="wp-block-heading"><span id="toc7">典型パターン 2: Range の引数が不正</span></h3>



<pre class="wp-block-code"><code>Range(&quot;A1:Z0&quot;).Select  ' 行番号 0 は存在しない → 1004
Range(&quot;&quot;).Value = 1    ' 空文字 → 1004</code></pre>



<p><code>Range</code> に渡す文字列が不正（存在しないアドレス・空文字）だと1004になります。変数から動的に組み立てた文字列を <code>Range</code> に渡す場合は要注意です。</p>



<h3 class="wp-block-heading"><span id="toc8">典型パターン 3: 保護されたシートに書き込み</span></h3>



<pre class="wp-block-code"><code>ActiveSheet.Range(&quot;A1&quot;).Value = 100  ' シートが保護されているとエラー1004</code></pre>



<p><strong>直し方</strong>: 保護を一時的に解除してから書き込み、終わったら戻します。</p>



<pre class="wp-block-code"><code>ActiveSheet.Unprotect
ActiveSheet.Range(&quot;A1&quot;).Value = 100
ActiveSheet.Protect</code></pre>



<h3 class="wp-block-heading"><span id="toc9">典型パターン 4: Cells の引数が範囲外</span></h3>



<pre class="wp-block-code"><code>Cells(1048577, 1).Value = 1  ' Excel 2007以降でも行の上限は 1048576</code></pre>



<p>Excelの行列の上限を超えた値を <code>Cells</code> や <code>Range</code> に渡すと1004です。ループで <code>i</code> を増やしていく処理でありがちなミスです。</p>



<h2 class="wp-block-heading"><span id="toc10">実行時エラー 9｜インデックスが有効範囲にありません</span></h2>



<p>配列やコレクションの範囲外にアクセスしたときに出るエラーです。</p>



<h3 class="wp-block-heading"><span id="toc11">典型パターン</span></h3>



<pre class="wp-block-code"><code>Dim arr(1 To 3) As String
arr(4) = &quot;aaa&quot;  ' エラー9

Workbooks(&quot;存在しないブック.xlsx&quot;).Activate  ' エラー9
Worksheets(5).Select  ' シートが4枚しかなければエラー9</code></pre>



<p>配列の添字、ブック名、シート名・シート番号の指定ミスで発生します。1004 と混同しがちですが、「<strong>コレクションに対するアクセス</strong>」がキーワードです。</p>



<h3 class="wp-block-heading"><span id="toc12">直し方</span></h3>



<p><strong>配列の場合</strong> は <code>LBound</code> と <code>UBound</code> で範囲を確認します。</p>



<pre class="wp-block-code"><code>Dim i As Long
For i = LBound(arr) To UBound(arr)
    Debug.Print arr(i)
Next i</code></pre>



<p><strong>ブック・シートの場合</strong> は名前で存在チェックしてからアクセスします。先ほどの <code>SheetExists</code> 関数のように、<code>On Error Resume Next</code> で一時的にエラーを抑制して判定する方法が定番です。</p>



<p>動的配列で <code>ReDim</code> を忘れた場合もエラー9になります。<code>ReDim Preserve arr(1 To n)</code> を先に実行してから添字に代入しましょう。</p>



<h2 class="wp-block-heading"><span id="toc13">実行時エラー 91｜オブジェクト変数または With ブロック変数が設定されていません</span></h2>



<p>「Nothing が入っているオブジェクト変数を使おうとした」というエラーです。<code>Set</code> を書き忘れたときに出ます。</p>



<h3 class="wp-block-heading"><span id="toc14">典型パターン</span></h3>



<pre class="wp-block-code"><code>Dim ws As Worksheet
ws.Range(&quot;A1&quot;).Value = 1  ' Set していない → エラー91

Dim r As Range
Set r = Range(&quot;A:A&quot;).Find(&quot;検索語&quot;)
MsgBox r.Address  ' Find で見つからないと Nothing → エラー91</code></pre>



<p>特に <strong>Find メソッドは「見つからないとき Nothing を返す」</strong> ので、そのまま <code>r.Address</code> などにアクセスすると91になります。Findは実務で多用するので、ここは鉄則として覚えておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc15">直し方</span></h3>



<p>Set が必要なオブジェクト（<code>Worksheet</code>、<code>Range</code>、<code>Workbook</code> など）は、<strong>必ず Set で代入してから使う</strong>。Find などの結果は <strong>Nothing 判定を挟む</strong>。</p>



<pre class="wp-block-code"><code>Dim r As Range
Set r = Range(&quot;A:A&quot;).Find(&quot;検索語&quot;)
If r Is Nothing Then
    MsgBox &quot;見つかりませんでした&quot;
    Exit Sub
End If
MsgBox r.Address</code></pre>



<p><code>Is Nothing</code> は VBA における null チェックの作法です。Findと組み合わせて使う流れは必ず身につけてください。</p>



<h2 class="wp-block-heading"><span id="toc16">実行時エラー 438｜オブジェクトはこのプロパティまたはメソッドをサポートしていません</span></h2>



<p>そのオブジェクトに存在しないプロパティやメソッドを呼び出したときのエラーです。</p>



<h3 class="wp-block-heading"><span id="toc17">典型パターン</span></h3>



<pre class="wp-block-code"><code>Dim ws As Worksheet
Set ws = ActiveSheet
ws.Rows.Count  ' OK
ws.Count       ' Worksheet に Count プロパティはない → エラー438</code></pre>



<p>よくあるのは、<strong>変数の型を間違えている</strong> ケースです。「<code>Range</code> と思って書いていたけど実際は <code>Worksheet</code> だった」など、オブジェクト型の取り違えで発生します。</p>



<h3 class="wp-block-heading"><span id="toc18">直し方</span></h3>



<p>まずは <code>Dim</code> で型をきちんと宣言すること。<code>Variant</code> や <code>Object</code> 型で受けてしまうと、VBEの入力補完が効かず、存在しないメソッドを気づかずに書けてしまいます。</p>



<pre class="wp-block-code"><code>Dim ws As Worksheet   ' OK: 入力補完が効く
Dim obj As Object     ' NG: 何でも書けてしまう</code></pre>



<p>また <code>.</code> を打ったときに候補が出ないメンバは存在しないので、<strong>入力補完に頼る</strong> のも有効な予防策です。</p>



<h2 class="wp-block-heading"><span id="toc19">実行時エラー 424｜オブジェクトが必要です</span></h2>



<p>オブジェクトを要求する場所に、オブジェクトではない値を渡したときのエラーです。</p>



<pre class="wp-block-code"><code>Dim ws As Worksheet
ws = Worksheets(&quot;Sheet1&quot;)      ' Set を忘れた → エラー424
Set ws = Worksheets(&quot;Sheet1&quot;)  ' 正解</code></pre>



<p><code>Set</code> キーワードを忘れたパターンがほぼ全てです。オブジェクト変数への代入には必ず <code>Set</code> を付ける、というルールを徹底しましょう。VBAは他言語にない独特な作法なので、初学者ほどハマりやすいポイントです。</p>



<h2 class="wp-block-heading"><span id="toc20">実行時エラー 6｜オーバーフロー</span></h2>



<p>変数の型の最大値を超えたときに発生します。</p>



<pre class="wp-block-code"><code>Dim i As Integer
i = 40000  ' Integer の上限は 32767 → エラー6</code></pre>



<p>Integer（-32768〜32767）の上限を超えると即座にオーバーフローします。行数をカウンタにするなど、<strong>大きな値が入る可能性のある変数は必ず <code>Long</code> 型</strong> にしましょう。</p>



<pre class="wp-block-code"><code>Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row</code></pre>



<p>VBAでは Integer を使うメリットはほぼないため、整数は基本 Long と覚えてしまって構いません。</p>



<h2 class="wp-block-heading"><span id="toc21">エラーが出たときのデバッグ手順</span></h2>



<p>エラー番号を検索しても原因がわからないときは、次の手順で調査します。</p>



<h3 class="wp-block-heading"><span id="toc22">1. ステップ実行（F8キー）</span></h3>



<p>VBEで調査したいプロシージャの先頭にカーソルを置き、<code>F8</code> キーを押すと <strong>1行ずつ実行</strong> できます。1行進めるたびに変数の中身を確認できるので、「どの行でおかしくなったか」を特定できます。</p>



<p><!-- screenshot: 01_ui_vbe-step-execution.png | VBE（Visual Basic Editor）のコードウィンドウで、ステップ実行中の画面。対象はExcelのVBEウィンドウ（Alt+F11で開く）。サンプルコード（Sub SampleStep() など適当な5〜6行のプロシージャ）を用意し、F8キーで1行実行した状態を撮影。現在実行中の行が黄色くハイライトされた状態を表示。ローカル変数ウィンドウかイミディエイトウィンドウも下部に表示すると望ましい。メニューバー・コード左のグレー帯（ブレークポイントマージン）が見える範囲で撮影。 --></p>



<h3 class="wp-block-heading"><span id="toc23">2. イミディエイトウィンドウ（Ctrl + G）</span></h3>



<p>イミディエイトウィンドウは、VBEで <code>Ctrl + G</code> を押すと開く対話的な実行窓です。ここに次のように打ち込むと、その場で値を確認できます。</p>



<pre class="wp-block-code"><code>? Range(&quot;A1&quot;).Value
? TypeName(Range(&quot;A1&quot;).Value)
? ActiveSheet.Name</code></pre>



<p><!-- screenshot: 02_ui_vbe-immediate-window.png | VBEのイミディエイトウィンドウ（下部パネル）が開いた状態の画面。Ctrl+Gで開いたイミディエイトウィンドウに「? Range("A1").Value」と入力し、その下の行に結果値（例: 100 など数値）が表示されている状態を撮影。上部コードウィンドウも見え、イミディエイトウィンドウとの分割表示になっていること。イミディエイトウィンドウのタイトルバー「Immediate」が確認できる範囲で撮影。 --></p>



<p><code>TypeName</code> は変数やセルの値の型を調べられる関数で、エラー13（型の不一致）のデバッグに絶大な効果を発揮します。</p>



<p>コードの途中に <code>Debug.Print</code> を仕込むのも定番です。</p>



<pre class="wp-block-code"><code>Debug.Print &quot;i=&quot; &amp; i, &quot;値=&quot; &amp; arr(i)</code></pre>



<h3 class="wp-block-heading"><span id="toc24">3. ブレークポイント（F9キー）</span></h3>



<p>気になる行を選択して <code>F9</code> を押すと、その行に赤い丸（ブレークポイント）が付きます。実行するとその行で自動的に一時停止するので、ステップ実行と組み合わせて原因箇所を絞り込めます。</p>



<p><!-- screenshot: 03_ui_vbe-breakpoint.png | VBEのコードウィンドウで、ブレークポイントが設定された状態の画面。F9キーを押してブレークポイントを設定した行（コード左端のグレー帯に赤い丸が表示）を撮影。ブレークポイントが設定された行は赤い背景色でハイライトされる。コード全体が5〜8行程度の短いSubプロシージャを使用し、中央の1行にブレークポイントが付いている状態を表示。コード左の赤い丸（ブレークポイントマーカー）が明確に見えるよう、左マージンも含めて撮影範囲に収めること。 --></p>



<p>ステップ実行・イミディエイト・ブレークポイントの3つを使いこなせると、VBAのデバッグ効率は劇的に上がります。VBEの使い方を体系的に押さえたい方は <a href="https://mashukabu.com/excel-vba-vbe-menu-explanation/">Excel VBAのVBE（Visual Basic Editor）のメニュー解説</a> も併せてご覧ください。</p>



<h2 class="wp-block-heading"><span id="toc25">On Error 構文によるエラーハンドリング</span></h2>



<p>想定外のエラーでマクロが止まるのを防ぐには、<code>On Error</code> 構文でハンドリングを書きます。</p>



<h3 class="wp-block-heading"><span id="toc26">On Error GoTo ラベル</span></h3>



<p>エラー発生時に指定したラベルへジャンプする、もっとも基本的な形です。</p>



<pre class="wp-block-code"><code>Sub Sample()
    On Error GoTo ErrHandler

    ' 本体処理
    Range(&quot;A1&quot;).Value = 1 / 0

    Exit Sub  ' ← エラーなく終わったらここで抜ける（重要）

ErrHandler:
    MsgBox &quot;エラー番号: &quot; &amp; Err.Number &amp; vbCrLf &amp; _
           &quot;内容: &quot; &amp; Err.Description
End Sub</code></pre>



<p>ポイントは、<strong>エラーがなく正常終了した場合にラベルの下に処理が流れ込まないよう <code>Exit Sub</code> を置く</strong> ことです。これを忘れると、正常終了時にもエラーメッセージが表示されてしまいます。</p>



<p><code>Err.Number</code> でエラー番号、<code>Err.Description</code> でメッセージを取得できるので、ログ出力やユーザー向けメッセージに活用しましょう。</p>



<h3 class="wp-block-heading"><span id="toc27">On Error Resume Next</span></h3>



<p>エラーが起きても止めずに次の行へ進む、というモードです。前述のシート存在チェックのように、「エラーが出ること自体を期待している」局面で使います。</p>



<pre class="wp-block-code"><code>On Error Resume Next
Set ws = ThisWorkbook.Worksheets(&quot;売上&quot;)
On Error GoTo 0  ' エラー抑制を解除

If ws Is Nothing Then
    MsgBox &quot;売上シートがありません&quot;
End If</code></pre>



<p><strong>使い終わったら必ず <code>On Error GoTo 0</code> で解除</strong> してください。付けっぱなしにすると、本来気づくべきエラーまで無視されてしまい、バグの発見が遅れます。</p>



<p><code>On Error Resume Next</code> は強力な一方で、<strong>乱用するとエラーが全部握りつぶされる危険な構文</strong> でもあります。「ここで発生するエラーは想定内だ」と言い切れる狭い範囲に限定して使いましょう。</p>



<h2 class="wp-block-heading"><span id="toc28">エラーを減らすための予防策</span></h2>



<p>そもそもエラーを出さないコードを書く、というのが最も効率的な対策です。VBAで押さえておきたい基本作法をまとめておきます。</p>



<ul class="wp-block-list"><li><strong><code>Option Explicit</code> を必ず宣言する</strong>: 変数の宣言漏れを防ぎ、タイプミスをコンパイル時に検出できます。詳しくは <a href="https://mashukabu.com/excel-vba-option-explicit/">Excel VBA の Option Explicit とは</a> を参照してください。</li><li><strong>適切な型で宣言する</strong>: <code>Variant</code> や <code>Object</code> の乱用を避け、<code>Long</code> / <code>String</code> / <code>Worksheet</code> など具体的な型を指定する。入力補完が効き、エラー438・424の予防になります。型の基本は <a href="https://mashukabu.com/excel-vba-variable-explanation/">Excel VBA の変数について</a> でまとめています。</li><li><strong>シート・ブックは名前ではなく変数で保持</strong>: <code>Worksheets("売上")</code> を何度も書かず、先頭で <code>Set ws = Worksheets("売上")</code> しておく。リネーム時の修正箇所も減ります。</li><li><strong>マジックナンバーを避ける</strong>: <code>Cells(Rows.Count, 1).End(xlUp).Row</code> のように、最終行を動的に取る。固定で <code>Range("A1:A1000")</code> と書くと、1000行を超えたときに破綻します。最終行取得の定石は <a href="https://mashukabu.com/excel-vba-howto-get-lastrow/">Excel VBAで最終行を取得する方法</a> を参照してください。</li><li><strong>Find の結果は必ず Nothing チェック</strong>: 前述の通りエラー91の温床です。</li></ul>



<p>こうした基本を押さえたうえで、<code>On Error</code> で想定外だけ拾う、という二段構えが理想です。VBAマクロの基礎から学び直したい方は <a href="https://mashukabu.com/excel-vba-macro-beginners-guide/">Excel VBAマクロ入門ガイド</a> や <a href="https://mashukabu.com/excel-vba-automation-guide/">Excel VBA自動化ガイド</a> に体系的にまとめていますので、併せてどうぞ。</p>



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



<p>VBAの実行時エラーは、番号ごとに原因のパターンがかなり決まっています。</p>



<ul class="wp-block-list"><li><strong>エラー13（型の不一致）</strong>: 数値変数に文字列やエラー値を入れていないか。<code>IsNumeric</code> / <code>IsError</code> で事前チェック。</li><li><strong>エラー1004</strong>: シート名・Range引数・シート保護・セル範囲超過のいずれか。シート存在チェック関数を用意しておく。</li><li><strong>エラー9（インデックス範囲外）</strong>: 配列・ブック・シートへのアクセスを確認。<code>LBound</code> / <code>UBound</code> や名前検査で防ぐ。</li><li><strong>エラー91（オブジェクト未設定）</strong>: <code>Set</code> の書き忘れ、Findの結果 Nothing。<code>Is Nothing</code> 判定を徹底。</li><li><strong>エラー438</strong>: 存在しないメソッド呼び出し。型を正しく宣言する。</li><li><strong>エラー424</strong>: <code>Set</code> 忘れ。</li><li><strong>エラー6（オーバーフロー）</strong>: Integer ではなく Long を使う。</li></ul>



<p>そして、エラーが出たときは慌てずに <strong>ステップ実行 → イミディエイトで型を確認 → <code>Debug.Print</code> でログを仕込む</strong> という順番で追いかけましょう。ハンドリングが必要な場面では <code>On Error GoTo</code> と <code>On Error Resume Next</code> を適切に使い分け、<strong>使ったら必ず <code>On Error GoTo 0</code> で解除する</strong> ことも忘れずに。</p>



<p>エラーと上手に付き合えるようになると、VBAの開発スピードは一段階上がります。この記事をブックマークしておいて、エラーが出たときに番号で逆引きしていただければ幸いです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/vba-error-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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-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">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>
