我有一个包含任务列表的工作表,每行一个。列A是任务名称,列B是必须完成的日期,列C是必须执行此操作的人员。 D列用于表示何时完成。如果此列包含任何内容,则整行的背景颜色应为灰色,否则应为白色。
我认为worksheet_change
事件是解决此问题的最佳方法。我想我可以使用条件格式,但是如果细胞被拖拽,那似乎很容易破坏 - 我需要这样做尽可能“防弹”!
在伪代码中,我正在努力实现以下目标:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target includes a cell in column "D"
If "D" is not empty
Set entire row background to grey
Else
Set entire row background to white
End If
End If
End Sub
有人能给我任何关于实现这个的最佳方法的指示吗?我是在正确的路线上,还是有更好的方法?
答案 0 :(得分:1)
我认为你可以在每个细胞上使用以下条件:
=INDIRECT("$D" & ROW())>0
我做了一些复制/粘贴并拖动了细胞,条件格式没有破坏。
答案 1 :(得分:0)
使用条件格式:
转到Tools->Options->General
并激活R1C1 reference style
条件:=ISEMPTY(RC4)
使用VBA:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim found As Range
Dim cell As Range
Dim colStart As Integer
Dim colEnd As Integer
Set found = Intersect(Target, Me.Columns(4))
colStart = 1
colEnd = 4
If Not found Is Nothing Then
For Each cell In found
With Me.Range(Me.Cells(cell.Row, colStart), Me.Cells(cell.Row, colEnd)).Interior
If IsEmpty(cell) Then
.ColorIndex = 15
Else
.ColorIndex = xlNone
End If
End With
Next cell
End If
Set found = Nothing
End Sub
我建议使用条件格式