こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

いつもお世話になっております。
Excel2003を使用しております。

シートに直接プログラムを書いています。
(例として、Sheet1とします)

シートの内容が変わったときに、色々プログラムを実行していこうと思っているのですが、

Private Sub Worksheet_Change(ByVal Target As Range)
のTargetが上手く取得できていない気がします。

今までは上手く動いていたのですが、
急にTargetの値に数値(セルに入力した値)が入ってしまうようになり
上手く組めなくて困っています。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim 開始1 As Range
Dim 終了1 As Range
Dim 開始2 As Range
Dim 終了2 As Range

Set 開始1 = Range("D5:D63")
Set 終了1 = Range("E5:E63")
Set 開始2 = Range("F5:F63")
Set 終了2 = Range("G5:G63")

If ThisWorkbook.ActiveSheet.ProtectContents Then '保護かかってたら
End '強制終了
End If

If Not Application.Intersect(Target, 開始1) Or Application.Intersect(Target, 実績日開始2) Is Nothing Then
Call 開始(Target, 開始1, 開始2)

ElseIf Not Application.Intersect(Target, 終了1) Or Application.Intersect(Target, 終了2) Is Nothing Then
Msgbox "テスト!"

End If
End Sub


'-----------------------------------------------
Sub 開始(ByVal Target As Range, 開始1 As Range, 開始2 As Range)
If Not Application.Intersect(Target, 開始1) Is Nothing Then
MsgBox Target.Row
End If

If Not Application.Intersect(Target, 開始2) Is Nothing Then
MsgBox Target.Row + 1
End If

End Sub

全部シートに書いています。
まだ、テスト段階のため適当なプログラムしか書いておりません。
(指定範囲が変更された場合に、Msgboxを出したりなど
単純なことしかしていません)

どこが悪いのか、教えて頂けないでしょうか?

よろしくお願い致します。

投稿日時 - 2014-05-28 10:43:06

QNo.8613962

すぐに回答ほしいです

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

>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でも可能なはずです。
ご参考まで。

投稿日時 - 2014-05-28 12:08:04

お礼

回答ありがとうございます。

Is Not Nothingまで書かないといけないんですね^^;

Union、初めて聞きました!
試してみましたが、プログラムは無事動きました!
とっても助かりました!ありがとうございます^^

投稿日時 - 2014-05-28 13:50:09

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問