Excel 如何使用工作表更改事件进行条件格式设置?
我有一个工作表,其中包含一个任务列表,每行一个。A列是任务名称,B列是必须完成任务的日期,C列是必须完成任务的人员。D列用于指示何时完成。如果此列包含任何内容,则整行的背景色应为灰色,否则应为白色 我认为Excel 如何使用工作表更改事件进行条件格式设置?,excel,vba,Excel,Vba,我有一个工作表,其中包含一个任务列表,每行一个。A列是任务名称,B列是必须完成任务的日期,C列是必须完成任务的人员。D列用于指示何时完成。如果此列包含任何内容,则整行的背景色应为灰色,否则应为白色 我认为工作表\u change事件是处理此问题的最佳方式。我想我可以使用条件格式,但如果单元格被拖来拖去,它似乎很容易被破坏——我需要它尽可能“防弹” 在伪代码中,我试图实现以下目标: Private Sub Worksheet_Change(ByVal Target As Range) If
工作表\u 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
有谁能给我指点一下实现这一点的最佳方法吗?我的思路是否正确,或者有更好的方法吗?我认为您可以在每个单元格上使用以下条件:
=INDIRECT("$D" & ROW())>0
我做了一些复制/粘贴并拖动单元格,条件格式没有中断。条件格式:
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
转到Tools->Options->General
并激活R1C1参考样式
条件:=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
我建议使用条件格式