この記事を読んでわかること
- VBAの実行時エラー -2147352565 の主な原因と対処法がわかる
- エラーを特定するコツを知れる
- エラーを繰り返さない方法を学べる
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
VBA(Excelマクロ)の実行時エラー-2147352565とは

このエラーは、VBAでオブジェクトに対し、無効な操作を行ったときに発生するエラーです。

オブジェクトとは、操作対象のシートやセルなどを指します。
要は、VBAでも無理なことを指示したり、できないことを処理させようとした場合に発生するということです。
では具体的に、このエラーが発生する原因は何なのでしょうか?
次項で解説いたします。
実行時エラー-2147352565の原因と対処法
このエラーは、シート指定の方法に誤りがある場合などに発生します。
下記のVBAコードを見てください。
Sub エラー()
Worksheets(999).Select
End Sub
「Worksheets」を使ってシートを指定した例ですが、
999番目のシートが存在しなかったために、エラーが発生しました。

一番右のシートを指定したい場合は、「Worksheets.Count」と記述しましょう。
Sub エラー対処()
Worksheets(Worksheets.Count).Select ' 一番右のシートを選択
End Sub
シート名で指定している場合は、完全一致が条件です。
大文字小文字・全角半角・スペースなどに注意し、完全一致しているか確認しましょう。
Worksheets("sheet1").Select ' 全て小文字は間違い
Worksheets("Sheet1").Select ' 先頭を大文字にすると完全一致
原因を特定するためのコツ
初めてのエラーが発生した場合、焦って頭が真っ白になってしまいがちです。
プログラムにエラーはつきものですので、一旦落ち着きましょう。
エラーが発生したら、まずは原因を特定することが大切です。
エラー画面に「デバッグ」というボタンがあればクリックしましょう。

すると、エラーの原因となった行が黄色くマーキングされます。

該当する行か、その直前のコードをよく見てみましょう。
シート名や番号が入っている場合は、そのシートが存在することを確認するようにしてください。
エラーを繰り返さないために
原因と対処法がわかったら、あとはエラーを繰り返さないように処理するだけです。
シートを指定する場合は、できるだけオブジェクト名で指定しましょう。
関連記事:シート取得(オブジェクト名を取得)
関連記事:シート指定(オブジェクト名で指定)
If文を使ってシートが存在するかを確認してから操作するのも有効です。
最後に
VBA(Excelマクロ)の実行時エラー-2147352565の原因と対処法について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!