在Excel中(使用VBA)我想在双击时将复选标记的颜色从灰色更改为绿色,然后在双击时再次返回灰色(基本上是切换)。目前的代码如下 - 没有尝试过我的工作。请帮忙。
这是图像。字体是Wingdings,字符代码是252,字体颜色是#BEBEBE和#008000。我希望这些灰色复选标记在双击时变为绿色,如果再次双击,则返回灰色。这是在一系列细胞中(B7至C150)。
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
感谢您的帮助!!
答案 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
我找不到vb10
或vb15
,我猜这些是您生成的字体颜色。如果您对这种情况不满意,那么事件的想法是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