如果活动单元格内部颜色发生变化



我想要以下VBA代码:

如果活动单元格内部颜色更改为colorindex 44,那么我希望右侧五列的单元格具有文本"完成"和今天的日期。

我已经尝试过以下操作,但只有当我将所选单元格向右移动时才有效。当单元格颜色没有改变时,它也不会停止工作。

Private Sub Worksheet_SelectionChange  (ByVal Target As Range)
   If ActiveCell.Offset(0, -1).Interior.ColorIndex = 44 Then
        ActiveCell.Offset(0, 4) = "Done" & Date
   End If
End Sub

必须使用Target而不是ActiveCell

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Interior.ColorIndex = 44 Then
        Target.Offset(ColumnOffset:=4).Value = "Done " & Date
    End If
End Sub

请注意,这无法检查颜色是否更改,因为没有相应的事件。您只能测试实际颜色指数是否为44。但为了防止覆盖"更改"日期,您可以测试该日期是否已经存在。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Rows.Count + Target.Columns.Count > 2 Then Exit Sub 'exit if more than one cell is selected
    If Target.Interior.ColorIndex = 44 And Not Left$(Target.Offset(ColumnOffset:=4).Value, 4) = "Done" Then
        Target.Offset(ColumnOffset:=4).Value = "Done " & Date
    End If
End Sub

最新更新