【VBA】実行時エラー 91「オブジェクト変数または With ブロック変数が設定されていません。」の対処法

【VBA】実行時エラー 91「オブジェクト変数または With ブロック変数が設定されていません。」の対処法 VBA
この記事は約3分で読めます。

今回はExcel VBAを実行した際に発生した「実行時エラー 91「オブジェクト変数または With ブロック変数が設定されていません。」の対象方について解説していきます。

スポンサーリンク
[ad01]

オブジェクトとは

オブジェクトは「物」のことを指します。

VBAで「ブック」、「シート」、「セル」に対して操作する時にどのオブジェクトを指定するのか指定するための書き方です。

オブジェクトの対象
  • Application
  • Workbook
  • Worksheet
  • Range

例えばSheet1のRange(“A1”)に”テスト”と設定したい時、Sheet2を表示した状態で下記コードを実行するとSheet2のRange(“A1″)に”テスト”と設定されてしまいます。

Sub Sample()

Range("A1") = "テスト"

End Sub

別のシートに設定されないようにするためにどのシートに対して操作をするのかオブジェクトを指定します。

Sub Sample2()

Dim Ws1 As Worksheet
Set Ws1 = Worksheets("Sheet1")

Ws1.Range("A1") = "テスト"

End Sub
うめ
うめ

オブジェクトを指定しなくても問題ありませんが、どのオブジェクトを操作するのか指定するのをオススメします。

エラーの原因

オブジェクトについて理解した上でエラーを解説していきます。
エラーの原因は2つです。

エラーの原因
  1. オブジェクトに対してSetの付け忘れ
  2. SetしたオブジェクトがNothing

オブジェクトに対してSetの付け忘れ

先ほどのコードから「Set」を取り除くと実行時エラー91が発生します。

Sub Sample2()

Dim Ws1 As Worksheet
Ws1 = Worksheets("Sheet1")

Ws1.Range("A1") = "テスト"

End Sub

オブジェクトを代入する時はSetが必要です。

Setを付け忘れている場合は、Setを付けるだけでエラーが解消されるのでオブジェクト変数まわりを確認しましょう。

オブジェクトを代入する時は「Set」が必須!

Setしたオブジェクトに対してNothing

シートを指定する場合、存在しないものを指定することはできません。

Sub Sample2()

Dim Ws1 As Worksheet
Ws1 = Nothing

Ws1.Range("A1") = "テスト"

End Sub

まとめ

実行時エラー 91「オブジェクト変数または With ブロック変数が設定されていません。」の対処法について解説を行いました。

個人的にはSetの付け忘れが多いのかな…と思っています。

オブジェクト変数を指定する場合は気を付けるようにしましょう!

この記事が気に入ったら
いいね ! しよう

Twitter で

VBAを学習する時間が取れない人

VBAは我流で組むことができますが、初心者だと作業時間が多く掛かったり、間違った部分を見つけるのに苦労したります。

VBAが組めるようになれば便利なことも多いですが、仕事をしながら勉強するのは結構大変…。

もし時間に追われて思うようにいかないのであればココナラで「VBAを組める人」に依頼してみませんか?

個人で販売しているため価格も抑えらえれます
まずはこちらから無料会員登録をして依頼をしてましょう!


VBA
スポンサーリンク
[ad01]
うめをフォローする
梅屋ラボ
タイトルとURLをコピーしました