Home / Microsoft / Excel / 【2026年最新版】ExcelのVBAマクロが動かない・実行時エラーが出る原因と対処法【完全ガイド】

【2026年最新版】ExcelのVBAマクロが動かない・実行時エラーが出る原因と対処法【完全ガイド】

※本ページにはプロモーション(広告)が含まれています

Excelで作成したVBAマクロを実行しようとしたら、「マクロが無効です」と表示されたり、「実行時エラー ‘1004’」などのエラーが出て動かなくなった経験はありませんか?

VBAマクロは業務効率化に欠かせない機能ですが、セキュリティ設定の変更、参照設定の破損、コードのバグなど、さまざまな原因で突然動かなくなることがあります。特に2024年以降、MicrosoftがVBAマクロのセキュリティポリシーを強化したことで、「昨日まで動いていたマクロが急に動かなくなった」というトラブルが急増しています。

この記事では、ExcelのVBAマクロが動かない原因を体系的に整理し、エラーコード別の具体的な対処法をステップ形式で解説します。初心者の方でも順番に確認していけば問題を解決できるよう、図解付きで丁寧に説明していきます。

Excel VBAランタイムエラーが発生した状態

この記事でわかること

  • VBAマクロが動かない・無効になる7つの主な原因
  • マクロのセキュリティ設定(トラストセンター)の正しい確認・変更方法
  • 実行時エラー(1004、91、424、13、9など)のエラーコード別対処法
  • 参照設定エラー(MISSING)の修正手順
  • VBAのデバッグ方法と効率的なエラー特定テクニック
  • ファイル形式(.xlsm / .xls / .xlsx)の互換性問題の解決法
  • Excelの修復・再インストールによる根本的な解決方法

Excel VBAマクロの基礎知識

具体的な対処法に入る前に、VBAマクロの基本的な仕組みを理解しておきましょう。原因の特定がスムーズになります。

VBAマクロとは?

VBA(Visual Basic for Applications)は、Microsoft Officeに搭載されているプログラミング言語です。Excelでは、繰り返し行う操作を自動化したり、独自の関数を作成したりするために使われます。

たとえば、毎月のレポート作成で「データを集計→グラフを作成→印刷用に整形」という一連の作業を、ボタン1つで自動実行できるようにするのがVBAマクロの典型的な使い方です。

VBAマクロが実行される仕組み

VBAマクロが正常に動作するためには、以下の条件がすべて揃っている必要があります。

条件 説明
マクロ対応ファイル形式 .xlsm(マクロ有効ブック)または .xls(旧形式)で保存されている
セキュリティ設定で許可 トラストセンターでマクロの実行が許可されている
参照設定が正常 VBAが使用する外部ライブラリへの参照が正しく設定されている
コードにエラーがない 構文エラーや実行時エラーがなく正しく記述されている
Excelが正常に動作 Excel自体が破損しておらず、アドインが競合していない

この5つの条件のうち、どれか1つでも満たされていないと、マクロは正常に動作しません。以下のセクションでは、それぞれの条件に対応する原因と対処法を詳しく解説していきます。

VBAマクロが動かない7つの主な原因

VBAマクロが動かなくなる原因は、大きく分けて以下の7つに分類できます。まずは全体像を把握しましょう。

原因 難易度 よくある症状
1. マクロのセキュリティ設定 初級 「マクロが無効にされました」と表示
2. ファイル形式の問題 初級 保存したはずのマクロが消えている
3. 参照設定のエラー 中級 「コンパイルエラー」が発生
4. 実行時エラー(コードのバグ) 中級 「実行時エラー ‘XXXX’」と表示
5. インターネットからダウンロードしたファイルのブロック 初級 マクロが完全に無効化されている
6. アドインの競合 中級 特定のPCだけマクロが動かない
7. Excel自体の不具合 上級 すべてのマクロが動かない

以下、それぞれの原因について具体的な対処法を解説していきます。

対処法1:マクロのセキュリティ設定を確認・変更する

VBAマクロが動かない最も多い原因が、セキュリティ設定によるブロックです。Excelはセキュリティ上の理由から、初期状態ではマクロの実行を制限しています。

マクロが無効になっているか確認する方法

ファイルを開いた際に、画面上部に黄色い「セキュリティの警告」バーが表示されている場合、マクロがブロックされています。

確認手順:

  1. マクロを含むExcelファイル(.xlsm)を開く
  2. 画面上部に「セキュリティの警告:マクロが無効にされました。」と表示されるか確認
  3. 表示されている場合は「コンテンツの有効化」ボタンをクリック

「コンテンツの有効化」ボタンをクリックすると、そのファイルのマクロが一時的に有効になります。ただし、ファイルを閉じて再度開くと、再びブロックされる場合があります。

トラストセンターでマクロの設定を変更する

毎回「コンテンツの有効化」をクリックするのが面倒な場合や、警告バーが表示されない場合は、トラストセンターの設定を確認・変更します。

設定手順:

  1. 「ファイル」タブをクリック
  2. 左側メニューの「オプション」をクリック
  3. 「Excelのオプション」画面で、左側の「トラストセンター」をクリック
  4. 「トラストセンターの設定」ボタンをクリック
  5. 左側メニューの「マクロの設定」をクリック
  6. 以下の4つのオプションから適切なものを選択
設定 動作 推奨度
警告を表示せずにすべてのマクロを無効にする マクロが完全にブロックされ、通知も出ない 非推奨
警告を表示してすべてのマクロを無効にする マクロがブロックされるが、有効化ボタンが表示される 推奨(初期値)
デジタル署名されたマクロを除き、すべてのマクロを無効にする 署名付きマクロのみ自動実行される 企業向け
すべてのマクロを有効にする すべてのマクロが自動で実行される 非推奨(危険)
注意:「すべてのマクロを有効にする」は、悪意のあるマクロも自動実行されてしまうため、セキュリティ上推奨されません。通常は「警告を表示してすべてのマクロを無効にする」を選択し、必要なファイルだけ個別に有効化するのが安全です。

信頼できる場所(トラステッドロケーション)を設定する

特定のフォルダに保存されたマクロファイルを常に信頼済みとして扱いたい場合は、「信頼できる場所」に登録する方法が最も安全で便利です。

設定手順:

  1. 「ファイル」→「オプション」→「トラストセンター」→「トラストセンターの設定」を開く
  2. 左側メニューの「信頼できる場所」をクリック
  3. 「新しい場所の追加」ボタンをクリック
  4. 「参照」ボタンでマクロファイルを保存しているフォルダを選択
  5. 必要に応じて「この場所のサブフォルダーも信頼する」にチェック
  6. 「OK」をクリックして設定完了

この設定を行うと、登録したフォルダ内のマクロファイルは、セキュリティ警告なしで自動的にマクロが有効になります。

対処法2:ファイル形式を確認する(.xlsx → .xlsm)

Excelの標準ファイル形式である「.xlsx」はマクロを保存できません。VBAマクロを含むファイルは「.xlsm」(マクロ有効ブック)形式で保存する必要があります。

よくあるファイル形式のトラブル

形式 拡張子 マクロ保存 注意点
Excelブック .xlsx 不可 マクロを含んで保存すると警告なく削除される
マクロ有効ブック .xlsm 可能 VBAマクロの標準保存形式
Excel 97-2003ブック .xls 可能 旧形式。互換性の問題が起きることがある
Excelバイナリブック .xlsb 可能 高速だが一部の機能に制限あり

ファイル形式を.xlsmに変更する手順

  1. マクロを含むExcelファイルを開く
  2. 「ファイル」→「名前を付けて保存」をクリック
  3. 保存先を選択し、ファイル名の下にある「ファイルの種類」をクリック
  4. 一覧から「Excel マクロ有効ブック (*.xlsm)」を選択
  5. 「保存」をクリック
よくある失敗:マクロを作成した後、保存時に「.xlsx」形式のまま保存してしまうケースが非常に多いです。Excelはこの場合「VBプロジェクトは削除されます」という警告を出しますが、うっかり「はい」を押すとマクロが消えてしまいます。VBAマクロを作ったら、必ず.xlsm形式で保存する習慣をつけましょう。

対処法3:インターネットからダウンロードしたファイルのブロックを解除する

2022年以降、Microsoftはインターネットからダウンロードしたファイルに含まれるVBAマクロをデフォルトでブロックするポリシーを導入しました。この場合、「コンテンツの有効化」ボタンも表示されず、マクロが完全に無効化されます。

ブロックされているか確認する方法

ファイルを開いたときに、画面上部に赤い「セキュリティリスク」バーが表示され、以下のメッセージが出る場合は、インターネットからのファイルとしてブロックされています。

「セキュリティリスク:このファイルのソースが信頼できないため、Microsoftはマクロの実行をブロックしました。」

ブロック解除の手順(Windows)

  1. Excelファイルを閉じる
  2. エクスプローラーでファイルを右クリック→「プロパティ」を開く
  3. 「全般」タブの最下部に「セキュリティ:このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」と表示されている
  4. 許可する」のチェックボックスにチェックを入れる
  5. 適用」→「OK」をクリック
  6. ファイルを再度Excelで開く

これでマクロのブロックが解除され、通常通り「コンテンツの有効化」ボタンが表示されるようになります。

PowerShellで複数ファイルを一括解除する方法

大量のファイルを一括でブロック解除したい場合は、PowerShellを使うと効率的です。


# 指定フォルダ内のxlsmファイルをすべてブロック解除
Get-ChildItem -Path "C:\Users\Username\Documents\マクロ" -Filter *.xlsm | Unblock-File

対処法4:参照設定のエラー(MISSING)を修正する

VBAエディタで「コンパイルエラー:プロジェクトまたはライブラリが見つかりません」と表示される場合、参照設定が壊れている可能性があります。

参照設定とは?

VBAの参照設定は、外部のライブラリ(DLLやタイプライブラリ)を使用するための設定です。たとえば、VBAからOutlookを操作するには「Microsoft Outlook XX.0 Object Library」への参照が必要です。

Officeのバージョンアップやアンインストール、PCの移行などによって、参照先のライブラリが見つからなくなると「MISSING」と表示され、マクロがコンパイルエラーになります。

参照設定の確認・修正手順

  1. Alt + F11 キーを押してVBAエディタ(VBE)を開く
  2. メニューバーの「ツール」→「参照設定」をクリック
  3. 一覧の中で「MISSING:」と表示されている項目がないか確認
  4. 「MISSING:」がある場合、その項目のチェックを外す
  5. 代わりに正しいバージョンのライブラリを探してチェックを入れる
  6. 「OK」をクリックして閉じる
VBAエディタで参照設定を確認する画面
ヒント:「MISSING」の項目を外しただけでエラーが解消しない場合は、コード内で使用しているレイトバインディングへの書き換えを検討してください。レイトバインディングにすると、参照設定に依存しなくなるため、異なるバージョンのOffice間でも互換性が保たれます。

レイトバインディングへの書き換え例

たとえば、Outlookを操作するVBAコードの場合:

アーリーバインディング(参照設定が必要):


Dim olApp As Outlook.Application
Set olApp = New Outlook.Application

レイトバインディング(参照設定が不要):


Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")

対処法5:よくある実行時エラーとその解決法

VBAの実行時エラーは、マクロが動作中に問題が発生したときに表示されます。エラー番号ごとに原因と対処法が異なるため、表示されたエラー番号を確認して対応しましょう。

実行時エラー 1004:アプリケーション定義またはオブジェクト定義のエラー

これは最も頻出するVBAエラーです。さまざまな原因で発生するため、以下の主要な原因を順番に確認してください。

原因1:存在しないシートやセルを参照している


' エラー例:「Sheet2」が存在しないときにエラー
Sheets("Sheet2").Range("A1").Value = "テスト"

' 対処法:シートの存在を事前にチェック
Dim ws As Worksheet
On Error Resume Next
Set ws = Sheets("Sheet2")
On Error GoTo 0
If ws Is Nothing Then
    MsgBox "Sheet2が見つかりません"
Else
    ws.Range("A1").Value = "テスト"
End If

原因2:保護されたシートに書き込もうとしている


' 対処法:シートの保護を一時的に解除
ActiveSheet.Unprotect Password:="パスワード"
' (処理を実行)
ActiveSheet.Protect Password:="パスワード"

原因3:コピー&ペーストの範囲が不正


' エラーになるコード(結合セルへの貼り付けなど)
Range("A1:C10").Copy
Range("D1").PasteSpecial

' 対処法:貼り付け先の範囲を明確にする
Range("A1:C10").Copy Destination:=Range("D1")

実行時エラー 91:オブジェクト変数またはWithブロック変数が設定されていません

オブジェクト型の変数にNothing(空)が入っている状態でプロパティやメソッドにアクセスしようとすると発生します。


' エラー例:Findで見つからなかったときにNothingになる
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A:A").Find("検索値")
rng.Interior.Color = vbYellow ' ← rngがNothingの場合エラー91

' 対処法:Nothingチェックを追加
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A:A").Find("検索値")
If Not rng Is Nothing Then
    rng.Interior.Color = vbYellow
Else
    MsgBox "検索値が見つかりませんでした"
End If

実行時エラー 424:オブジェクトが必要です

オブジェクトとして認識されない変数や式をオブジェクトとして使おうとすると発生します。

主な原因と対処法:

  • Setキーワードの付け忘れ:オブジェクト変数への代入にはSetが必要(Set ws = Sheets("Sheet1")
  • スペルミス:オブジェクト名やメソッド名のスペルが間違っている
  • ActiveXコントロールの破損:フォーム上のコントロールが壊れている場合、再配置が必要

実行時エラー 13:型が一致しません

変数に格納しようとした値のデータ型が、変数の宣言型と一致しない場合に発生します。


' エラー例:数値型変数に文字列を代入
Dim num As Integer
num = Range("A1").Value ' ← A1に「abc」が入っているとエラー13

' 対処法:IsNumericで事前チェック
Dim num As Variant
num = Range("A1").Value
If IsNumeric(num) Then
    Dim result As Integer
    result = CInt(num)
Else
    MsgBox "セルA1に数値以外のデータが入っています"
End If

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

配列やコレクションの要素に、存在しないインデックスでアクセスしようとすると発生します。


' エラー例:存在しないシートにアクセス
Dim ws As Worksheet
Set ws = Worksheets("売上データ") ' ← シート名が違うとエラー9

' 対処法:シート名を正確に確認する
' イミディエイトウィンドウで確認コマンド:
' For Each s In Worksheets: Debug.Print s.Name: Next

実行時エラー 53:ファイルが見つかりません

DLLファイルや外部ファイルを参照するコードで、指定されたパスにファイルが存在しない場合に発生します。

対処法:

  • ファイルパスが正しいか確認する(特に円マークの有無、フォルダ名の変更)
  • ネットワークドライブの場合、接続が切れていないか確認する
  • Dir()関数でファイルの存在を事前にチェックするコードを追加する

対処法6:VBAのデバッグ方法を習得する

エラーが発生した場合、デバッグ機能を活用することで原因を効率的に特定できます。VBAエディタ(VBE)には強力なデバッグツールが搭載されています。

ステップ実行(F8キー)

コードを1行ずつ実行して、どの行でエラーが発生するかを特定する最も基本的なデバッグ方法です。

手順:

  1. Alt + F11 でVBAエディタを開く
  2. デバッグしたいプロシージャ(Sub、Function)の中にカーソルを置く
  3. F8キーを押すと、1行ずつ実行される
  4. 黄色くハイライトされた行が「次に実行される行」
  5. エラーが発生する行を特定したら、その行の変数や式を確認する

ブレークポイントの設定(F9キー)

特定の行で実行を一時停止させたい場合は、ブレークポイントを設定します。

手順:

  1. 一時停止させたい行にカーソルを置く
  2. F9キーを押す(行が赤くハイライトされる)
  3. マクロを実行すると、ブレークポイントの行で一時停止する
  4. 変数の値を確認し、F5で続行またはF8でステップ実行

イミディエイトウィンドウ(Ctrl + G)

デバッグ中に変数の値を確認したり、簡単な式を実行したりできるウィンドウです。

便利な使い方:


' 変数の値を確認
? myVariable

' セルの値を確認
? Range("A1").Value

' シート数を確認
? Worksheets.Count

' 式の結果を確認
? IsNumeric(Range("B5").Value)

ウォッチウィンドウ

特定の変数や式の値をリアルタイムで監視できるウィンドウです。

設定方法:

  1. VBAエディタのメニューから「表示」→「ウォッチウィンドウ」を開く
  2. 監視したい変数を右クリック→「ウォッチ式の追加」を選択
  3. ステップ実行中に、ウォッチウィンドウで値の変化をリアルタイムに確認できる

エラーハンドリングの実装

本番環境で使うマクロには、必ずエラーハンドリングを実装しましょう。これにより、エラーが発生してもマクロが突然停止せず、ユーザーに適切なメッセージを表示できます。


Sub SampleMacro()
    On Error GoTo ErrorHandler
    
    ' === メインの処理 ===
    Dim ws As Worksheet
    Set ws = Worksheets("データ")
    ws.Range("A1").Value = "処理完了"
    
    Exit Sub
    
ErrorHandler:
    MsgBox "エラーが発生しました。" & vbCrLf & _
        "エラー番号: " & Err.Number & vbCrLf & _
        "内容: " & Err.Description, vbExclamation
End Sub

対処法7:アドインの競合を確認する

Excelにインストールされているアドインが原因でVBAマクロが動作しない場合があります。特に、サードパーティ製のアドインがVBAの動作に干渉するケースが報告されています。

アドインを無効にして確認する手順

  1. 「ファイル」→「オプション」→「アドイン」をクリック
  2. 画面下部の「管理」で「COMアドイン」を選択し、「設定」をクリック
  3. 表示されたアドインのチェックをすべて外して「OK」をクリック
  4. Excelを再起動して、マクロが動作するか確認
  5. 動作した場合、アドインを1つずつ有効にして原因のアドインを特定する

Excelアドイン(.xlam)も確認する

COMアドインだけでなく、Excelアドイン(.xlam形式)も競合の原因になることがあります。

  1. 「ファイル」→「オプション」→「アドイン」を開く
  2. 画面下部の「管理」で「Excelアドイン」を選択し、「設定」をクリック
  3. 同様にすべてのチェックを外して確認

対処法8:Excelの修復・再インストール

上記の対処法をすべて試してもVBAが動作しない場合、Excel(Office)自体が破損している可能性があります。

Officeの修復(クイック修復)

  1. Windowsの「設定」→「アプリ」→「アプリと機能」を開く
  2. 一覧から「Microsoft Office」(またはMicrosoft 365)を選択
  3. 変更」ボタンをクリック
  4. クイック修復」を選択して「修復」をクリック
  5. 修復完了後、PCを再起動

オンライン修復(クイック修復で解決しない場合)

クイック修復で解決しない場合は、オンライン修復を実行します。これはOfficeを完全に再構築するため、より多くの問題を解決できます。

  1. 上記の手順1〜3まで同じ操作を行う
  2. オンライン修復」を選択して「修復」をクリック
  3. インターネットに接続した状態で、修復が完了するまで待つ(30分〜1時間程度)
  4. 完了後、PCを再起動
注意:オンライン修復を行うと、Officeのカスタム設定(ツールバーの配置など)がリセットされることがあります。事前にVBAプロジェクトのバックアップ(.basファイルとしてエクスポート)を取っておくことをお勧めします。

Excelをセーフモードで起動する

修復の前に、まずセーフモードで起動して問題の切り分けを行うのも有効です。

  1. Ctrlキーを押しながらExcelのアイコンをダブルクリック
  2. 「セーフモードで起動しますか?」と表示されたら「はい」をクリック
  3. セーフモードでは、アドインやカスタマイズが読み込まれない状態で起動する
  4. この状態でマクロが動作すれば、アドインやカスタマイズが原因

実行時エラーコード対応表

VBAで頻出するエラーコードの一覧と、それぞれの原因・対処法をまとめました。エラーが発生したときの参照用としてお使いください。

エラー番号 メッセージ 主な原因 対処法
5 プロシージャの呼び出しが不正です 関数の引数が不正 引数の型や数を確認
6 オーバーフローしました 変数型の範囲を超える値 Long型やDouble型に変更
9 インデックスが有効範囲にありません 存在しないシート名や配列番号 シート名や配列サイズを確認
11 0で除算しました 割り算の分母が0 分母が0でないか事前にチェック
13 型が一致しません データ型の不一致 IsNumericなどで事前チェック
53 ファイルが見つかりません 外部ファイルのパスが不正 ファイルパスの存在を確認
70 書き込みできません ファイルが他のプロセスで使用中 ファイルを閉じてから再実行
91 オブジェクト変数が設定されていません Nothing状態のオブジェクトにアクセス Nothingチェックを追加
424 オブジェクトが必要です Setの付け忘れ、スペルミス Set文の有無とスペルを確認
438 プロパティまたはメソッドをサポートしていません オブジェクトに存在しないメソッドを呼び出し オブジェクトの型とメソッド名を確認
1004 アプリケーション定義のエラー 多種多様(セル操作、シート保護など) 本記事の「エラー1004」セクション参照
1004 マクロ ‘XXXX’ を実行できません マクロが見つからない、セキュリティでブロック マクロの有効化とマクロ名を確認
VBAマクロが正常に実行完了した画面

よくある質問(FAQ)

Q1. 昨日まで動いていたマクロが急に動かなくなりました。何が原因ですか?
最も多い原因はOfficeのアップデートによるセキュリティポリシーの変更です。Windows Updateと同時にOfficeが更新されると、マクロのセキュリティ設定が変わることがあります。トラストセンターのマクロ設定を確認し、「警告を表示してすべてのマクロを無効にする」が選択されているか確認してください。また、インターネットからダウンロードしたファイルの場合は、ファイルのプロパティから「ブロックの解除」を行ってください。
Q2. VBAエディタ(VBE)の開き方がわかりません。
最も簡単な方法はAlt + F11キーを同時に押すことです。これでVBAエディタが開きます。もし開発タブが表示されていない場合は、「ファイル」→「オプション」→「リボンのユーザー設定」で「開発」にチェックを入れると、リボンに「開発」タブが表示され、そこからもVBAエディタにアクセスできます。
Q3. 「コンパイルエラー:Sub または Function が定義されていません」と出ます。
このエラーは、呼び出そうとしているプロシージャ(Sub/Function)の名前が間違っているか、プロシージャが存在しないモジュール内にある場合に発生します。まず、マクロ名のスペルが正しいか確認してください。次に、プロシージャが含まれるモジュールが正しくインポートされているか、VBAエディタのプロジェクトエクスプローラーで確認してください。モジュールを誤って削除してしまった場合は、バックアップファイルからの復旧が必要です。
Q4. 「マクロが見つかりません」と表示されて実行できません。
この問題にはいくつかの原因が考えられます。(1) ファイルを.xlsx形式で保存してしまいマクロが削除された。(2) マクロの含まれるモジュールが破損している。(3) マクロ名にスペースや日本語が含まれていて正しく認識されない。まず、Alt + F8 キーでマクロの一覧を開き、目的のマクロが表示されるか確認してください。表示されない場合は、VBAエディタ(Alt + F11)でモジュール内にコードが存在するか確認してください。
Q5. 自宅のPCでは動くマクロが、会社のPCでは動きません。
企業の管理PCでは、グループポリシーでマクロの実行が制限されていることが多いです。この場合、個人の設定では変更できず、IT管理者に設定変更を依頼する必要があります。また、Officeのバージョンが異なる場合は、参照設定の不一致やVBA関数の互換性の問題も考えられます。レイトバインディングへの書き換えや、互換性の高いコードへの修正を検討してください。
Q6. マクロを実行すると「メモリ不足」エラーが出ます。
VBAのメモリ不足エラーは、大量のデータ処理や、ループ内でオブジェクト変数を解放していないことが原因で発生します。対処法として、(1) 使用済みのオブジェクト変数にSet obj = Nothingを追加してメモリを解放する、(2) ループ内でセルを1つずつ操作するのではなく、配列に一度読み込んでから処理する、(3) Application.ScreenUpdating = Falseで画面更新を停止して処理を高速化する、これらの最適化を実施してみてください。
Q7. 個人用マクロブック(PERSONAL.XLSB)が動かなくなりました。
個人用マクロブックが壊れた場合は、まず非表示になっているPERSONAL.XLSBを「表示」タブ→「再表示」で表示してみてください。それでも動かない場合は、PERSONAL.XLSBファイルを再構築する必要があります。Excelを閉じ、エクスプローラーでC:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Excel\XLSTARTフォルダを開き、PERSONAL.XLSBの名前を変更(バックアップ)してからExcelを再起動し、新しい個人用マクロブックを作成してください。
Q8. マクロの実行速度がとても遅くなりました。
マクロの実行速度を改善するには、以下のコードをマクロの最初と最後に追加してください。

マクロの最初に追加:
Application.ScreenUpdating = False(画面更新を停止)
Application.Calculation = xlCalculationManual(自動計算を停止)
Application.EnableEvents = False(イベント処理を停止)

マクロの最後に追加:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

これらの設定で、画面の再描画や自動計算の処理負荷がなくなり、大幅に高速化されます。

Q9. 64ビット版のExcelでマクロが動きません。
32ビット版Excelで作成したマクロの中にWindows API(Declare文)を使用しているものがあると、64ビット版Excelでは動作しません。対処法としては、Declare文にPtrSafeキーワードを追加し、ポインター型の変数をLongPtrに変更する必要があります。例:Private Declare PtrSafe Function GetTickCount Lib "kernel32" () As LongPtr。32ビットと64ビットの両方に対応するには、#If VBA7 Thenの条件付きコンパイルを使用してください。
Q10. Excel for Mac(Mac版Excel)でVBAマクロが動きません。
Mac版のExcelはWindows版と比べてVBAの機能に制限があります。特に、(1) Windows APIの呼び出し(Declare文)は使用できない、(2) ActiveXコントロール(フォームのボタンなど)は非対応、(3) ファイルパスの区切り文字がバックスラッシュ(\)ではなくコロン(:)の場合がある、(4) 一部のファイルシステム操作が異なる、といった違いがあります。Mac対応にするには、Application.PathSeparatorを使ってパス区切り文字を動的に取得するなど、プラットフォーム非依存のコードに書き換えてください。

まとめ

ExcelのVBAマクロが動かない原因は多岐にわたりますが、この記事で紹介した対処法を順番に確認していけば、ほとんどの問題は解決できます。

確認すべきポイントを優先度順にまとめると:

優先度 確認項目 対象
1(最初に確認) マクロのセキュリティ設定・コンテンツの有効化 マクロ自体が実行されない場合
2 ファイル形式(.xlsx→.xlsm)の確認 マクロが消えてしまった場合
3 インターネットダウンロードファイルのブロック解除 メールやWebからの取得ファイル
4 参照設定のMISSINGチェック コンパイルエラーの場合
5 実行時エラーのコード別対処 エラー番号が表示される場合
6 アドインの無効化 特定のPC環境だけ動かない場合
7(最終手段) Officeの修復・再インストール すべてのマクロが動かない場合

VBAマクロは一度正しく動くようになれば、業務の大幅な効率化につながる強力なツールです。エラーが発生しても焦らず、この記事の手順に沿って1つずつ原因を切り分けていきましょう。

また、今後のトラブルを予防するために、以下の3点を習慣づけることをおすすめします。

  • VBAファイルは必ず.xlsm形式で保存する
  • エラーハンドリング(On Error GoTo)をマクロに実装する
  • 定期的にVBAプロジェクトのバックアップ(.basファイルとしてエクスポート)を取る

これらの対策を実施しておけば、万が一トラブルが発生しても迅速に復旧できます。快適なVBAライフをお送りください。

Check Also

Excelのデータの入力規則が機能しない・設定できない原因と対処法【2026年最新版】

「ドロップダウンリストを設定し …