イベントマクロを初めて書いてみたのですが
A列を全部選択して削除などをするとエラーがて出てしまいます
回避するにはどのようにしたら良いのでしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Select Case Target.Value
Case Is = "りんご"
cellColor = 3
Case Is = "みかん"
cellColor = 6
End Select
End If

If Not Intersect(Target, Range("B:B")) Is Nothing Then
Select Case Target.Value
Case Is = "りんご"
cellColor = 6
Case Is = "みかん"
cellColor = 3
End Select
End If
Target.Interior.ColorIndex = cellColor
End Sub

以上が書いたものです。
皆様の知恵お貸しください
宜しくお願いします。

A 回答 (3件)

セルを一個だけ選択したときだけ働く様にして良いのなら、最初に


If Target.Cells.Count > 1 Then Exit Sub
を盛り込めば良いでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます
エラーが出なくなりました
すばやい回答ありがとうございました。

お礼日時:2009/05/14 06:06

こんばんは。



細かいところは別として、

 If Target.Count > 1 Then Exit Sub
 If Target.Value ="" Then Exit Sub
 
プロシージャの下に、この二つを先頭に加えればよいと思います。

それと、列全体を対象とするなら、

If Not Intersect(Target, Range("A:A")) Is Nothing Then
   ↓
If Target.Column = 1 Then

としたほうが短くて済みます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
最初に加えさせていただきました
ありがとうございます

お礼日時:2009/05/14 06:21

こんな感じでしょうか?



Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellColor As Integer
Dim Rng As Range
If Not Intersect(Target, Range("A:A")) Is Nothing Then
For Each Rng In Target
cellColor = Rng.Interior.ColorIndex
Select Case Rng.Value
Case "りんご"
cellColor = 3
Case "みかん"
cellColor = 6
Case ""
cellColor = xlNone
End Select
Rng.Interior.ColorIndex = cellColor
Next Rng
End If

If Not Intersect(Target, Range("B:B")) Is Nothing Then
For Each Rng In Target
cellColor = Rng.Interior.ColorIndex
Select Case Rng.Value
Case "りんご"
cellColor = 6
Case "みかん"
cellColor = 3
Case ""
cellColor = xlNone
End Select
Rng.Interior.ColorIndex = cellColor
Next Rng
End If
End Sub

参考まで
    • good
    • 0
この回答へのお礼

ありがとうございます
実行させていただいたのですが
ターゲットをA:Aとしているせいでしょうか
A全体を消したときなどかなりの時間がかかってしまうようです
しかしながらエラーは出なくなりました
参考にさせていただきます。

お礼日時:2009/05/14 06:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング