双击时更改单元格中的字体颜色

时间:2018-02-16 16:00:00

标签: excel vba excel-vba

在Excel中(使用VBA)我想在双击时将复选标记的颜色从灰色更改为绿色,然后在双击时再次返回灰色(基本上是切换)。目前的代码如下 - 没有尝试过我的工作。请帮忙。

这是图像。字体是Wingdings,字符代码是252,字体颜色是#BEBEBE和#008000。我希望这些灰色复选标记在双击时变为绿色,如果再次双击,则返回灰色。这是在一系列细胞中(B7至C150)。

screenshot

CODE:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Column = 2 Then
Cancel = True
End If

If Target.Column = 3 Then
Cancel = True
End If

With Target.Font.Color
    If Not .Font.Color = vb15 Then
        .ColorIndex = vb10
    ElseIf Not .Font.Color = vb10 Then
        .ColorIndex = vb15
    End If
End With

End Sub

感谢您的帮助!!

2 个答案:

答案 0 :(得分:3)

如果颜色最初是红色或蓝色,这将有效:

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    With Target
        If .Column <> 2 And .Column <> 3 Then Exit Sub
        Cancel = True

        If .Font.Color = vbBlue Then
            .Font.Color = vbRed
        ElseIf .Font.Color = vbRed Then
            .Font.Color = vbBlue
        End If
    End With    
End Sub

我找不到vb10vb15,我猜这些是您生成的字体颜色。如果您对这种情况不满意,那么事件的想法是Exit Sub

更好的是,如果您决定使用带有默认选项的Select Case:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    With Target
        If .Column <> 2 And .Column <> 3 Then Exit Sub
        Cancel = True

        Select Case .Font.Color
            Case vbBlue
                .Font.Color = vbRed
            Case vbRed
                .Font.Color = vbBlue
            Case Else
                .Font.Color = vbBlue
        End Select
    End With    
End Sub

答案 1 :(得分:0)

这里的问题是颜色。使用以下方法之一定义和验证颜色。

Target.Font.Color = -16776961

Target.Font.Color = vbRed

Target.Font.Color = RGB(255, 0, 0)

此外,你应该只在你的命令中有目标。

With Target
    If Not .Font.Color = vb15 Then
        .ColorIndex = vb10