エクセル迷子案内所
← 学習記事一覧

Excelマクロ(VBA)が動かない・エラーが出るときの原因切り分け【症状別】

公開: 2026-05-24更新: 2026-07-08
執筆: FMaker(エクセル迷子案内所 運営者)対応を想定: Microsoft 365 / Excel 2021最終事実確認: 2026-07-08

「マクロを実行したら、赤い文字で 実行時エラー '13': 型が一致しません というダイアログが出た…」 「もらったマクロを開いたら警告バーが出て、そもそも実行できない/ボタンが見当たらない…」 「[開発]タブはあるのに、マクロ関連のボタンがグレーアウトして押せない…」 「エラーは出ないのに、重複を消すマクロを動かしたら一部の行しか処理されていない…」

マクロ(VBA)が思ったように動かないとき、原因は 大きく3系統 に分かれます。 やっかいなのは、同じ「動かない」でも 直す場所がまったく違う ことです。

この記事は、

症状を見れば、3つのタイプのどれかに必ず絞れる

という 切り分け(問診)形式 でまとめています。 上から順に読まなくても、自分の症状の章にジャンプしてOKです。

💡 関連記事:


まずは症状で切り分け(あなたはどのタイプ?)

マクロのトラブルは、次の3タイプのどれかです。 自分の症状に当てはまる行から、該当する章へジャンプしてください。

あなたの症状タイプ最短の直し方
そもそも実行できない/ボタンが無い・グレーアウト/警告バーが出る/記録したマクロが一覧に出ない① 実行できない・無効[開発]タブを表示・「コンテンツの有効化」または(ネット由来なら)ファイルのプロパティで「ブロック解除」・ブックの保護や共有を解除・.xlsm で保存(環境と設定の問題)
実行すると赤いエラーダイアログ(型が一致しません / 1004 アプリケーション定義… 等)が出て止まる② 実行時エラー「デバッグ」を押して 黄色い行 を読み、その行の変数・参照・対象セルを直す
エラーは出ないのに、結果のセル範囲がズレる/一部しか処理されない③ 結果がおかしい最終行を自動取得する・Option Explicit でタイプミスを防ぐ

📌 ポイント: セルに #VALUE!#N/A のように # で始まるエラー値 が出ているなら、それはマクロのエラーではありません。本記事ではなく Excelの主要エラー6種 を読んでください。本記事が扱うのは「マクロ(VBA)の動作そのもの」のトラブルです。

タイプ①は「そもそも動かせない」、タイプ②は「動かすと途中で止まる」、タイプ③は「最後まで動くのに結果が変」。 この3つの大きな違いを押さえると、迷わず正しい章にたどり着けます。


タイプ①:そもそもマクロが実行できない・無効になっている

一番多い入口です。多くの場合 コードは悪くなく、「環境・設定・保存形式」 の問題です。 サブ症状ごとに確認していきましょう。

[開発]タブが見当たらない

症状

  • リボンに「開発」タブが無く、マクロのボタンや「Visual Basic」が見つからない

なぜ起きる

[開発]タブは Excel の 既定では非表示 です。最初から無いのが普通なので、自分で表示する必要があります。

確認方法

リボン上部のタブ(ホーム・挿入・ページレイアウト…)の並びに「開発」があるかを見ます。

解決方法

  1. 「ファイル」→「オプション」→「リボンのユーザー設定」 を開く
  2. 右側の一覧で 「開発」にチェック を入れて「OK」

これでリボンに「開発」タブが出ます。なお、VBAエディタ(コードを書く画面)は開発タブが無くても Alt + F11 で開けます。

マクロがブロックされる・警告バーが出る

症状

  • ブックを開くと、上部に バー が出てマクロが実行できない
  • マクロを実行しようとしても反応がない

なぜ起きる

マクロ付きブックは、Excelが安全のために既定でマクロをブロックします。これはウイルス対策のための正常な動作です。 ただし 出るバーには2種類あり、解除の方法がまったく違う ので、まず どちらのバーが出ているか を見分けてください。

ケースA:黄色い「セキュリティの警告」バー+「コンテンツの有効化」ボタンが出る場合

自分で作ったブックや社内で受け取ったブックなど、インターネット経由ではないファイル で、トラスト センターの既定設定(マクロを通知付きで無効)によりブロックされているケースです。

  • 出どころが信頼できる場合のみ、黄色いバーの 「コンテンツの有効化」 ボタンを押すと、そのブックのマクロが有効になります
  • 恒久的に設定を見直すなら 「ファイル」→「オプション」→「トラスト センター」→「トラスト センターの設定」→「マクロの設定」 から変更します

ケースB:赤い「セキュリティ リスク」バナー(「コンテンツの有効化」ボタンが無い)が出る場合

ファイルのソースが信頼されていないため、Microsoft によってマクロの実行がブロックされました」のような 赤いバナー が出て、ボタンは「詳細情報」だけ、というケースです。これは インターネットからダウンロードしたファイル(メール添付やWebからの保存など、いわゆる Mark of the Web が付いたファイル)に対する、現行の Microsoft 365 の既定動作です。

このバナーには 「コンテンツの有効化」ボタンはありません。 黄色いバーをいくら探しても見つからないので、次の手順でファイル側のブロックを解除します(出どころが信頼できる場合のみ)。

  1. Excelをいったん閉じ、エクスプローラーでそのファイルを 右クリック → 「プロパティ」 を開く
  2. 「全般」タブの 下部の「セキュリティ」 にある 「許可する(ブロックの解除)」にチェック を入れて「OK」
  3. ファイルを開き直すと、赤いバナーが出なくなり、マクロを使えるようになります

💡 社内の共有フォルダなど決まった場所のブックを繰り返し使うなら、その場所を トラスト センターの「信頼できる場所」 に登録しておく方法もあります(毎回のブロック解除が不要になります)。

⚠️ 注意: 知らない人・出どころ不明のブックのマクロを安易に有効化したり、ブロックを解除したりしないでください。 マクロはファイルを削除したり外部と通信したりもできるため、悪意あるコードが仕込まれている可能性があります。中身が不安なときは、まず後述の「安全に扱う3つの習慣」のとおり、Alt + F11 でコードを確認してから判断しましょう。

マクロ関連のボタンがグレーアウトしている/記録したマクロが別ブックで見つからない

症状

  • [開発]タブの「マクロ」「マクロの記録」「Visual Basic」が 薄い色(グレーアウト)で押せない
  • 「マクロの記録」をしたつもりが、別のブックでマクロ一覧(Alt + F8)を開いても そのマクロが出てこない
  • 「個人用マクロブック」「PERSONAL.XLSB」という言葉を見たが、どこにあるのか・何者なのかわからない

なぜ起きる

この症状は、原因が大きく次の2つに分かれます。

原因1:ブックが「共有」状態か、「ブックの保護」がかかっている

「ブックの保護」([校閲]タブ→[ブックの保護])がかかっている状態や、古い「ブックの共有」機能が有効な状態では、ブックの構造を変える操作を防ぐために、マクロ関連の操作の一部が 意図的にグレーアウト されます。

  • 確認方法:[校閲]タブで「ブックの保護」が押された状態(=保護中)になっていないか/タイトルバーに「[共有]」の表記がないかを見ます
  • 解決:保護を解除する(再度「ブックの保護」を押す)/共有を解除すると、グレーアウトが戻ることがあります

なお、「ブックの共有」機能は Microsoft 365 では非推奨で、現在は OneDrive / SharePoint 経由の「共同編集」に置き換わっています。共同編集中のブックでも、一部の VBA 操作が制限されることがあります(ここは深入りしません)。

原因2:マクロを「個人用マクロブック(PERSONAL.XLSB)」に保存した/別ブックで見えないのはこれが理由のことが多い

「マクロの記録」のダイアログには 「マクロの保存先」 という欄があり、選択肢は次の3つです。

  • 作業中のブック(既定):そのブックを閉じると、そのマクロも見えなくなります
  • 新しいブック:新規ブックに記録します
  • 個人用マクロブックExcel 起動時に裏側で常に開かれる「PERSONAL.XLSB」という見えないブック にマクロを保存します。どのブックを開いていても、そのマクロを呼び出せます

「別ブックで一覧に出てこない」原因は、作業中のブックに保存したマクロを、別のブックで呼び出そうとしているから であることが多いです(逆に「個人用マクロブックに保存したつもりが、作業中のブックに保存していた」というパターンもあります)。

PERSONAL.XLSB の実体は、Windowsの場合 %AppData%\Microsoft\Excel\XLSTART\PERSONAL.XLSB に保存されます。このファイルは、初めて「個人用マクロブック」を保存先に選んだタイミングで 自動的に作成 されます(Mac は保存場所が異なります)。

解決方法

  • グレーアウトしている場合:[校閲]タブで「ブックの保護」「シート保護」を解除します。共有ブックなら「ブックの共有」を解除します([校閲]タブ→「ブックの共有」※環境により表示されないことがあります)
  • 別ブックで一覧に出ない場合:そのマクロを どこに保存したか を、Alt + F11 で VBAエディタを開いて確認します。左側のプロジェクトツリーで、VBAProject (PERSONAL.XLSB) の下に入っていれば任意のブックから呼べます。VBAProject (元のブック名.xlsm) の下に入っていれば、そのブックを開いている間だけ呼べます
  • 個人用マクロブックに移したい場合:VBAエディタで標準モジュールを PERSONAL.XLSB 配下にコピー&貼り付けし、保存して Excel を再起動するのが確実です(操作の流れだけ示します)

📌 補足: 「個人用マクロブック」はどのブックからでもマクロを呼べて便利ですが、業務用 PC では会社のセキュリティポリシーで読み込みが抑制されていることがあります。設定したのに動かないと感じたら、トラスト センターの設定スタートアップフォルダの設定 を確認するか、管理部門に相談してください。

保存したらマクロが消えた

症状

  • 一度保存して開き直したら、書いたはずのマクロが消えている

なぜ起きる

通常の .xlsx 形式で保存すると、マクロ(VBA)は破棄されます。 .xlsx はマクロを保存できない形式だからです。

解決方法

マクロを残すには マクロ有効ブック .xlsm で保存します(バイナリ形式の .xlsb でも可)。

  1. 「ファイル」→「名前を付けて保存」
  2. ファイルの種類を 「Excel マクロ有効ブック (*.xlsm)」 にする
  3. 保存時に「次の機能はマクロなしのブックに保存できません」と聞かれたら 「いいえ」 を選び、改めて .xlsm 形式を選ぶ

📌 ポイント: タイプ①は「環境・設定・保存形式」の問題で、コード自体は正しいことが多いです。まず 「開発タブの表示」「マクロの有効化(黄色いバーは『コンテンツの有効化』/赤いバナーはファイルのプロパティで『ブロック解除』)」「.xlsm で保存」 の3点を確認しましょう。ここを直すと、そのまま動くケースがよくあります。


タイプ②:実行するとエラーダイアログが出る(実行時エラー)

マクロを実行した瞬間に 赤い×アイコン付きのエラーダイアログ が出て止まるケースです。これを「実行時エラー」と呼びます。 ダイアログには 実行時エラー '13': 型が一致しません のように 番号日本語メッセージ が出ます。初心者がつまずきやすい代表的なものを見ていきます。

📌 ポイント: 実行時エラーは「何行目で・何が」を教えてくれる親切なサインです。ダイアログの 「デバッグ」ボタン を押すと、止まった行が 黄色くハイライト されます。エラー番号を暗記するより、まず 黄色い行と日本語メッセージ を読むのが先決です。

「型が一致しません」(実行時エラー 13)

症状

  • 実行時エラー '13': 型が一致しません のダイアログが出る

なぜ起きる

数値を入れるべき変数に、文字列や空白 が入ったときに起きます。たとえばセルに「未定」「(空白)」のような 数字として読めない値 が入っていると、数値変数に代入できずエラーになります。「100円」のように 末尾に単位が付いた値 も、文字列として扱われると同じくエラーになります。

確認方法

「デバッグ」を押し、黄色い行で どのセル・どの変数を計算しようとしているか を見ます。その対象セルの中身を確認します。

Before(このエラーが出る書き方)

Sub 合計する()
    Dim n As Long
    ' A1 に「未定」のような数字として読めない文字が入っていると、
    ' 数値変数 n に代入できず 実行時エラー 13(型が一致しません)になる
    n = Range("A1").Value
    MsgBox n
End Sub

After(直した動く版)

Sub 合計する()
    Dim n As Long
    ' IsNumeric で「数値として扱えるか」を先に確認してから代入する
    If IsNumeric(Range("A1").Value) Then
        n = Range("A1").Value
        MsgBox n
    Else
        MsgBox "A1 が数値ではありません: " & Range("A1").Value
    End If
End Sub

📌 補足: IsNumeric は「未定」のような文字列には False(数値ではない)を返すので、上のように安全に弾けます。ただし 「100円」のように単位が付いた文字列は、環境(地域・通貨の設定)によって True と判定されることがあります。 確実を期すなら、IsNumeric で大まかに弾いたうえで、想定する書式の値かどうか(例: 全角・単位・空白が混ざっていないか)も合わせて確認しておくと安心です。

数字に見えても 文字列扱い(左寄せ・緑の三角)だと計算がズレることがあります。詳しくは 数式が計算されない・=SUMがそのまま表示される も参照してください。

「オブジェクトが必要です」(実行時エラー 424)

症状

  • 実行時エラー '424': オブジェクトが必要です のダイアログが出る

なぜ起きる

RangeWorksheet などの オブジェクトを指定すべき場所 に、未設定の変数やスペルミスの名前を書いたときに起きます。

確認方法

黄色い行のオブジェクト名・変数名のスペルを確認します。

Before(このエラーが出る書き方)

Sub 値を入れる()
    Dim ws As Worksheet
    ' ws に何もセットしていないのに使おうとしているため
    ' 実行時エラー 424(オブジェクトが必要です)になる
    ws.Range("A1").Value = 100
End Sub

After(直した動く版)

Sub 値を入れる()
    Dim ws As Worksheet
    ' Set でオブジェクト(シート)を変数に割り当ててから使う
    Set ws = Worksheets("Sheet1")
    ws.Range("A1").Value = 100
End Sub

「インデックスが有効範囲にありません」(実行時エラー 9)

症状

  • 実行時エラー '9': インデックスが有効範囲にありません のダイアログが出る

なぜ起きる

存在しないシート名 を指定したり、配列の範囲外を参照したときに起きます。よくあるのは、シート名が「集計」なのにコードでは Worksheets("Sheet1") と書いているケースです。

確認方法

黄色い行で指定しているシート名・添字が、実際に存在するか を確認します。シート名は画面下のシート見出しと 完全一致(全角・半角や空白も)している必要があります。

Before(このエラーが出る書き方)

Sub シートを選ぶ()
    ' 実際のシート名が「集計」なのに "Sheet1" を指定しているため
    ' 実行時エラー 9(インデックスが有効範囲にありません)になる
    Worksheets("Sheet1").Activate
End Sub

After(直した動く版)

Sub シートを選ぶ()
    ' 実在するシート名に合わせる(下のシート見出しと完全一致させる)
    Worksheets("集計").Activate
End Sub

「アプリケーション定義またはオブジェクト定義のエラーです」(実行時エラー 1004)

症状

  • 実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラーです のダイアログが出る

なぜ起きる

「VBA から Excel に頼んだ操作」を、Excel 側が断っている 状態です。具体的には、次のようなケースで多く起きます。

  • 存在しないシートや存在しないブックを Sheets("...") Workbooks("...") で参照した(エラー9と症状が似ていますが、メッセージは 1004 になることがあります)
  • Range("A0")Cells(0, 1) のように、実在しないセル番地(行0・列0 など) を指定した
  • 保護されているシート(または保護されているセル)に書き込もうとした
  • Range("A1").Select を、いまアクティブでないシートのセル に対していきなり呼んだ/ActiveSheet を前提にしたコードを別のシートで動かした(「マクロの記録」で作ったコードを、記録時と違うシートで動かすと出やすいパターンです)

確認方法

「デバッグ」を押し、黄色い行で どの Range / Sheets / Workbooks を呼んでいるか を見ます。そのうえで、

  • 指定しているシート名が 実在するか(エラー9と同じ確認です)
  • セル番地が A1 形式として妥当か(A0 や行0・列0 はありません)
  • 書き込もうとしているシートが 保護されていないか([校閲]タブ→[シート保護の解除])

を順に確認します。保護されている場合は、いったん解除してから再実行します。

Before(このエラーが出る書き方)

Sub データを書き込む()
    ' いま開いているシート(ActiveSheet)が別のシートのまま、
    ' Sheet1 のセルをいきなり Select しようとしているため
    ' 実行時エラー 1004(アプリケーション定義またはオブジェクト定義のエラーです)になる
    Worksheets("Sheet1").Range("A1").Select
End Sub

After(直した動く版)

Sub データを書き込む()
    ' Select を使わず、対象シートのセルを直接書き換える
    ' (Select は対象シートをアクティブにしてからでないと失敗しやすい)
    Worksheets("Sheet1").Range("A1").Value = 100
End Sub

📌 補足: 「マクロの記録」で作ったコードは .SelectSelection.〇〇 の連続になりがちで、別のシートや別のブックで動かすと 1004 になりやすいです。.Select を使わず、対象のシート・セルを毎回オブジェクトで明示 する書き方(Worksheets("Sheet1").Range("A1").Value = ...)に直すと、1004 と 424 の両方が一気に減ります。

📌 ポイント: 実行時エラーの番号とメッセージは決まっています。13=型が一致しません/424=オブジェクトが必要です/9=インデックスが有効範囲にありません/1004=アプリケーション定義またはオブジェクト定義のエラーです(Excel側が操作を断った)。番号を取り違えると原因も取り違えます。共通の直し方は 「デバッグ → 黄色い行を読む → その行の変数・参照・対象セルを疑う」 です。なお、セルに出る #VALUE! などの # エラー値はこれとは別物で、Excelの主要エラー6種 の領域です。


タイプ③:動くけれど結果がおかしい(範囲ズレ・変数のミス)

エラーダイアログは出ず、最後まで動くのに 結果が変 なケースです。「静かなバグ」とも言え、気づきにくいのが厄介です。

対象範囲がズレている

症状

  • 一部の行しか処理されない/見出し行まで処理してしまう/空行で止まる

なぜ起きる

Range("A1:A10") のように 行数をべた書き していると、データが増減したときに範囲がズレます。データは増えるのに、コードの範囲は固定のままだからです。

解決方法

データの最終行を 自動で取得 して、その分だけ処理するようにします。最終行は次の書き方で取れます。

Sub 最終行を取得()
    Dim lastRow As Long
    ' A列の一番下のセルから上方向(xlUp)に詰めて、データのある最終行を取得する
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    MsgBox "A列の最終行は " & lastRow & " 行目です"
End Sub

Cells(Rows.Count, 1) は「A列(1列目)の一番下のセル」、.End(xlUp) は「そこから上に詰めて最初にデータがあるセル」、.Row で「その行番号」が取れます。固定の 10 の代わりに、この lastRow を使えば範囲ズレを防げます。

Option Explicit が無く、変数名のタイプミスに気づけない

症状

  • エラーは出ないのに、計算結果が 0 や空になる

なぜ起きる

VBAは既定では、宣言していない変数名でもその場で勝手に作ってしまいます。そのため 変数名を打ち間違えても気づかず、空の変数として扱われて静かに誤動作します。

解決方法

モジュールの先頭に Option Explicit を1行書きます。これで「宣言していない変数を使うとコンパイル時にエラーで止まる」ようになり、タイプミスをその場で発見できます。

Before(タイプミスに気づけない)

Sub 合計を表示()
    Dim goukei As Long
    goukei = 100
    ' 変数名を「gokei」と打ち間違えているが、Option Explicit が無いと
    ' エラーにならず、空(0)として扱われて MsgBox は 0 を表示してしまう
    MsgBox gokei
End Sub

After(先頭の Option Explicit で打ち間違いを検出)

Option Explicit   ' ← モジュールの一番上に書く

Sub 合計を表示()
    Dim goukei As Long
    goukei = 100
    ' 「gokei」は宣言されていないため、実行前のコンパイルで
    ' 「変数が定義されていません」と止まり、タイプミスに気づける
    MsgBox goukei
End Sub

数値のはずが文字列だった

セルの数字が 文字列扱い(左寄せ・緑の三角)だと、マクロの集計が合計に入らず結果がズレます。これは数式でも同じ現象が起きるので、原因と直し方は 数式が計算されない・=SUMがそのまま表示される を参照してください。

📌 ポイント: 「エラーが出ない=正しい」ではありません。 タイプ③は最後まで動くぶん見つけにくいので、処理の前後でセルを目視で照合 し、Option Explicit で「静かなバグ」を防ぎましょう。

例:重複を消すマクロの Before / After

たとえば、A列に重複のある名簿から重複を取り除くケースを考えます。処理前は次のように、同じ値(りんご・みかん)が複数行に並んでいます。

処理前のシート。A列の見出し「商品名」の下に、りんご・みかん・りんご・ぶどう・みかん の5件が左寄せ(文字列)で並び、重複している2件目以降の「りんご」(A4) と「みかん」(A6) が黄色くハイライトされている状態

このA列に対して、Excel標準の「重複の削除」と同じ結果を VBA で行うと、次のコードになります。

Sub 重複を削除()
    Dim lastRow As Long
    ' A列の最終行を自動取得(行数べた書きを避ける)
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' 1行目を見出しとして扱い、A列の重複行を1件だけ残して削除する
    '   Columns:=1 … 1列目(A列)の値で重複を判定
    '   Header:=xlYes … 先頭行は見出しなので処理対象から外す
    Range("A1:A" & lastRow).RemoveDuplicates Columns:=1, Header:=xlYes
End Sub

実行後はA列が一意になり、りんご・みかん・ぶどう の3件だけが残ります。

処理後のシート。重複削除マクロを実行した結果、A列の見出し「商品名」の下が りんご・みかん・ぶどう の3件だけになり、重複が取り除かれて一意になった状態。値は左寄せ(文字列)のまま

⚠️ 注意: 行や重複の 削除はやり直しがききにくい操作 です。マクロでの変更は Ctrl + Z(元に戻す)で戻せないことが多い ため、実行前に必ずブックをコピー(バックアップ) してから試してください。また、上の例のように 処理する列・範囲を限定 し、シート全体を無差別に消すようなコードは避けましょう。


マクロを安全に扱うための3つの習慣

マクロは便利な反面、ファイルを書き換える力を持ちます。次の3つを習慣にすると安心です。

  1. 出どころ不明のマクロは、実行前に中身(コード)を確認する ブックを開いて Alt + F11 でVBAエディタを開き、何をするコードかを読んでから実行します。削除・上書き・外部通信のような操作が含まれていないかを確認しましょう。
  2. 削除・上書き系のマクロは、必ずバックアップを取ってから実行する 重複削除や行削除など、データを変えるマクロは 実行前にブックをコピー しておきます。マクロでの変更は Ctrl + Z で戻せないことが多い ためです。
  3. マクロ有効ブックは .xlsm で保存し、ファイル名でわかるようにする .xlsx だとマクロは消えます。.xlsm で保存し、ファイル名にも目印を付けておくと、マクロ入りブックだと一目で判別できます。

📌 ポイント: トラブルの多くは「他人が作った/もらったブック」で起きます。出どころ・中身・保存形式の3点を最初に押さえておくと、後からの「なぜ動かない?」と「うっかり消した」の両方を減らせます。


まとめ:症状→原因→直し方の早見表

まずはこのフローで、自分がどのタイプかを判断してください。

タイプ症状原因直し方
① 実行できない・無効実行できない/ボタンが無い・グレーアウト/警告バーが出る開発タブ非表示・セキュリティでブロック・ブックの保護/共有・.xlsx 保存でマクロ消失[開発]タブを表示・黄色いバーは「コンテンツの有効化」/赤いバナー(ネット由来)はファイルのプロパティで「ブロック解除」・ブックの保護/共有を解除・.xlsm で保存
② 実行時エラー(13/424/9/1004)赤いエラーダイアログが出て止まる13=型不一致/424=オブジェクトが必要/9=範囲外(シート名違い等)/1004=Excel側が操作を断った(無効番地・保護・別シートの Select 等)「デバッグ」で黄色い行を読み、変数・参照・対象セルを直す
③ 結果がおかしいエラーは出ないが範囲ズレ・一部しか処理されない行数べた書き/Option Explicit 無しのタイプミス/数字が文字列最終行を自動取得・Option Explicit・文字列の数字を数値化
(別物)セルの #〇〇#VALUE! #N/A などセルに出るエラー値数式・関数側のエラー(マクロではない)Excelの主要エラー6種 を参照

タイプ①は「動かせない」、②は「途中で止まる」、③は「動くのに結果が変」。 ここを取り違えなければ、直し方も自然と決まります。


よくある質問

Q. エラーダイアログで「終了」と「デバッグ」どっちを押せばいい?

A. まず 「デバッグ」 を押してください。止まった行が黄色くハイライトされ、原因のヒントになります。中身を確認して直してから、改めて実行し直すのが安全です。何もせず「終了」を押すと、どこで止まったか分からないまま終わってしまいます。

Q. マクロを実行したら、元に戻せますか?

A. マクロでの変更は Ctrl + Z(元に戻す)で戻せないことが多い です。とくに削除・上書き系を実行すると取り消せません。重要なデータを扱うマクロは、実行前にブックをコピー(バックアップ) してから試してください。

Q. .xlsm.xlsx、どちらで保存すればいい?

A. マクロを残すなら .xlsm(マクロ有効ブック) です。.xlsx で保存するとマクロは破棄されて消えます。保存時に「マクロなしのブックに保存できません」と聞かれたら「いいえ」を選び、.xlsm を選んでください。

Q. 「個人用マクロブック」って何ですか? 普通のブックと何が違うんですか?

A. Excel の起動時に裏側で常に開かれる PERSONAL.XLSB という共通のブックです。どのブックを開いていても、そこに入っているマクロを呼び出せるのが、ふつうのブックとの違いです。「マクロの記録」のダイアログで保存先を 「個人用マクロブック」 にすると、初回に自動で作成されます。便利な一方、業務用 PC では管理部門が読み込みを止めていることもあるため、設定したのに動かないと感じたら、タイプ①の「マクロ関連のボタンがグレーアウトしている/記録したマクロが別ブックで見つからない」を見直してください。

Q. Mac でも同じですか?

A. 考え方(3タイプの切り分け・実行時エラーの読み方・.xlsm 保存)は 共通 です。VBAエディタも Mac で使えます。ただし、メニューの場所やセキュリティ設定の名称・位置は Windows とバージョンによって異なる ため、画面の表記に合わせて読み替えてください。

Q. 3タイプを試しても直りません

A. 記事の手順を試しても直らない場合、特定のコードや構成だけで起きるレアケースかもしれません。AIサポートで、エラーメッセージやコードを見せながら対話的に原因を切り分けてみてください。

体系的に学びたい人へ

PR

マクロをその場しのぎでなく体系的に身につけたい人へ。累計50万部・ChatGPTやCopilot活用にも対応した最新版です。

たった1秒で仕事が片づく Excel自動化の教科書【改訂第3版】

※ 当サイトはアフィリエイトプログラムを利用しており、上記リンク経由の購入で運営者が報酬を得ることがあります。

次に読む

よく読まれている

それでも解決しないときは

記事の手順を試しても直らない場合、特定の構成だけで起きるレアケースかもしれません。対話で原因を1つずつ切り分けるのが最短です。

AI案内人に相談する(無料・登録不要)→