VBA在双击时更改单元格颜色,然后再次双击时将其更改回来

时间:2017-09-28 01:01:44

标签: vba

我的当前代码只需单击一下即可将单元格颜色更改为黄色,然后再次单击时将其更改为空。我想知道我是否可以这样做,这次双击时将其更改为绿色(颜色指数= 10),然后再次双击时再回到空白。这是我目前的代码:

Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean) Cancel = True Worksheet_SelectionChange target End Sub

Private Sub Worksheet_SelectionChange(ByVal target As Range)If 
Intersect(target, Range("B9:AF129")) Is Nothing Then Exit Sub
    If target.Interior.ColorIndex = xlNone Then
        target.Interior.ColorIndex = 6
    ElseIf target.Interior.ColorIndex = 6 Then
        target.Interior.ColorIndex = xlNone
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

分类工作......

Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
    Cancel = ToggleColor(target, vbGreen)
    Debug.Print "double"

End Sub

Private Sub Worksheet_SelectionChange(ByVal target As Range)
    ToggleColor target, vbYellow
    Debug.Print "single"
End Sub

Private Function ToggleColor(rng As Range, clr As Long) As Boolean

    If Intersect(rng, Me.Range("B9:AF129")) Is Nothing Then Exit Function
    If rng.Cells.CountLarge > 1 Then Exit Function

    With rng.Interior
        If .ColorIndex = xlNone Or .Color <> clr Then
            .Color = clr
        Else
            .ColorIndex = xlNone
        End If
    End With

    ToggleColor = True 'to cancel the double-click
End Function