• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA シートプログラムでRangeエラー)

VBA シートプログラムでRangeエラー

このQ&Aのポイント
  • Excel2003を使用している場合、シートの内容が変わったときにプログラムを実行するために、VBAのWorksheet_Changeイベントを使用しますが、Targetの取得に問題があるようです。
  • 具体的には、急にTargetの値に数値(セルに入力した値)が入ってしまうようになり、プログラムが正しく動かなくなっています。
  • 修正するためには、条件式でApplication.Intersect関数を使用してTargetと比較する必要があります。具体的な修正方法については質問文を参考にしてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#203218
noname#203218
回答No.1

>If Not Application.Intersect(Target, 開始1) Or Application.Intersect(Target, 開始2) Is Nothing Then Notと Is Nothingは一対なので or を使用する場合にも両方必要なのでは。 If Not Application.Intersect(Target, 開始1)Is Nothing Or Not Application.Intersect(Target, 開始2) Is Nothing Then 変数宣言していない実績開始日2を使用指定していますが開始2と読み替えています。 モジュールの先頭でOption Explicitを記入すると宣言していない変数がある場合はエラーが出るので便利です。 Unionで、範囲を集合させた方がシンプルだと思います。 If Not Application.Intersect(Target, Union(開始1, 開始2)) Is Nothing Then Call 開始(Target, 開始1, 開始2) ElseIf Not Application.Intersect(Target, Union(終了1, 終了2)) Is Nothing Then MsgBox "テスト!" 私は2007ですが2003でも可能なはずです。 ご参考まで。

satoron666
質問者

お礼

回答ありがとうございます。 Is Not Nothingまで書かないといけないんですね^^; Union、初めて聞きました! 試してみましたが、プログラムは無事動きました! とっても助かりました!ありがとうございます^^