以下のようなシートがあります。
A列 B列 C列 D列 E列 F列 G列 H列
NO 名前 確認 日付1 日付2 確認 日付1 日付2
6行目からデータを入れる予定です。
C列には○印を入力します。
C列~E列までデータが入った行は、
F列~H列まで同じ処理をします。
(セルの背景色を変えます。)
以後同じことを列方向で繰り返します。
以下のようなVBAを組みましたが、
○の個数を数える部分でエラーがでます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim staff As String
Dim kakunin As String
Dim date1 As Date
Dim date2 As Date
Dim i As Long
Dim j As Long
Dim cnt As Long
'100件分ループ
For i = 6 To 105
'○の数をカウント
cnt = WorksheetFunction.CountIf(ActiveSheet.Range(Cells(i, 2), Cells(i, 256)), "○")
'jとは確認の列番号のこと
j = 3 * cnt
staff = Cells(i, 2)
kakunin = Cells(i, j)
date1 = Cells(i, j + 1)
date2 = Cells(i, j + 2)
'スタッフ名が入力されたら
If staff = "" Then
Range(Cells(i, j), Cells(i, j + 50)).Interior.ColorIndex = 15
Else
Cells(i, j).Interior.ColorIndex = xlNone
'○が入力されたら
If kakunin = "○" Then
Range(Cells(i, j + 1), Cells(i, j + 2)).Interior.ColorIndex = xlNone
Else
Range(Cells(i, j + 1), Cells(i, j + 2)).Interior.ColorIndex = 15
End If
If Cells(i, j + 1) <> "" And Cells(i, j + 2) <> "" Then
Cells(i, j + 3).Interior.ColorIndex = xlNone
End If
End If
Next i
End Sub
ご教授いただけたら、幸いです。
よろしくお願いいたします。
たとえば ○ だけの例ですが
If Target.Column = 3 And Target.Row >= 6 Then
For Each c In Range(Target.Address)
If Cells(c.Row, Target.Column) = "○" Then
Range(Cells(c.Row, Target.Column + 1), Cells(c.Row, Target.Column + 2)).Interior.ColorIndex = xlNone
Else
Range(Cells(c.Row, Target.Column + 1), Cells(c.Row, Target.Column + 2)).Interior.ColorIndex = 15
End If
Next
End If
こんな感じではいかがですか。
お礼
確かにそうでした!! If cnt = 0 Then j = 3 Else j = 3 * cnt End If に変更したことで、解決しました。 お世話になりました。