
下記のこーどを実行すると
上のコードだけ実行されます。
どこをなおしらよいのか。
わかる方おしえてくれませんでしょうか
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("E:E,G:G")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Row Mod 2 = 0 Then
If IsDate(.Value) Then
Cells(.Row, "A").Interior.ColorIndex = 6
End If
End If
End With
Dim rw As Long
If Target.Column <> 2 And Target.Column <> 3 Then Exit Sub
rw = Target.Row
If IsDate(Cells(rw, 2).Text) And IsDate(Cells(rw, 3).Text) Then
If Cells(rw, 2).Value >= Cells(rw, 3).Value Then
Cells(rw, 1).Interior.ColorIndex = 3
Else
Cells(rw, 1).Interior.ColorIndex = 1
End If
Else
Cells(rw, 1).Interior.ColorIndex = xlColorIndexNone
End If
End Sub
No.1ベストアンサー
- 回答日時:
そのコードは、二人の人物が書いたもののようですから、なるべく書法は合わせるようにしてみました。
内容については未検証です。Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Target, Range("E:E,G:G")) Is Nothing Then
If .Row Mod 2 = 0 Then
If IsDate(.Value) Then
Cells(.Row, 1).Interior.ColorIndex = 6
End If
End If
ElseIf Not Intersect(Target, Range("B:C")) Is Nothing Then
If IsDate(Cells(.Row, 2).Text) And IsDate(Cells(.Row, 3).Text) Then
If Cells(.Row, 2).Value >= Cells(.Row, 3).Value Then
Cells(.Row, 1).Interior.ColorIndex = 3
Else
Cells(.Row, 1).Interior.ColorIndex = 1
End If
Else
Cells(.Row, 1).Interior.ColorIndex = xlColorIndexNone
End If
End If
End With
End Sub
No.3
- 回答日時:
No.2です。
投稿後気づきました。
A列の「色なし」が抜けていました。
>Cells(.Row, "A").Interior.ColorIndex = 1
>End If
の次に
>Else
>Cells(.Row, "A").Interior.ColorIndex = xlNone
の2行を追加してください。
どうも失礼しました。m(_ _)m
No.2
- 回答日時:
こんばんは!
>If Intersect(Target, Range("E:E,G:G")) Is Nothing Or Target.Count > 1 Then Exit Sub
の1行でE・G列以外はチェンジイベントを発生させないようにしているので、
ここでB・C列も加える必要があります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B:C,E:E,G:G")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Column > 3 Then
If .Row Mod 2 = 0 Then
If IsDate(.Value) Then
Cells(.Row, "A").Interior.ColorIndex = 6
End If
End If
Else
If IsDate(Cells(.Row, "B")) And IsDate(Cells(.Row, "C")) Then
If Cells(.Row, "B") >= Cells(.Row, "C") Then
Cells(.Row, "A").Interior.ColorIndex = 3
Else
Cells(.Row, "A").Interior.ColorIndex = 1
End If
End If
End If
End With
End Sub
こんな感じでしょうかね。
※ お示しのコードをそのまま生かしたのですが、気になる点がいくつかあります。
① B・C列に関しては偶数行ではなく、すべての行が対象になります。
② B・C列とE・G列の優先順位はないのでしょうか?
上記コードだと最後に変更した列が対象になりますので、
仮にA列が黄色に色付けされていても、B・C列の入力の方が後だと
そちらの条件の色付けとなります。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
エクセルマクロPrivate Subを複数にする方法
Excel(エクセル)
-
エクセルVBA シートモジュールにチェンジイベントを複数設定する方法を教えて下さい。 例えば、B列に
Visual Basic(VBA)
-
-
4
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
5
EXCEL VBA 複数のシートに同じイベントプロシジャを書く場合
Excel(エクセル)
-
6
Worksheet.Change イベントを他のシートにも反映させる方法?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
URLのリンク切れをマクロを使っ...
-
Excelで、あるセルの値に応じて...
-
rowsとcolsの意味
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
VBAで指定範囲内の空白セルを左...
-
VBAコンボボックスで選択した値...
-
データグリッドビューの一番最...
-
VBAのFind関数で結合セルを検索...
-
期限を超えた日付に警告のメッ...
-
A列にある値をB列・C列にVBAで...
-
ExcelVBA 担当者別にフィルタし...
-
VBAで、特定の文字より後を削除...
-
vba 数値がゼロになるまで引く
-
エクセル 2つの表の並べ替え
-
オートフィルタをマクロで作成...
-
vbaでシートより100より大きい...
-
DataGridViewに空白がある場合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
【VBA】2つのシートの値を比較...
-
DataGridViewに空白がある場合...
-
VBAで、特定の文字より後を削除...
-
URLのリンク切れをマクロを使っ...
-
エクセル 2つの表の並べ替え
-
VBAを使って検索したセルをコピ...
-
VBAコンボボックスで選択した値...
-
VBAでのリスト不一致抽出について
-
複数csvを横に追加していくマク...
-
C# dataGridViewの値だけクリア
-
データグリッドビューの一番最...
おすすめ情報
Application.EnableEvents = False
Application.EnableEvents = True
をつけるとしたらどの場所がよいのでしょぅか。
もしくは必要ないのでしょぅか。
おしえてくれませんでしょうか