Vba双击单元格以突出显示然后双击另一个单元格删除第一个单元格高亮显示

时间:2016-07-18 13:08:09

标签: excel vba excel-vba

我在之前的一个问题中发现,当从一系列单元格(例如A1到A4)双击时,如何将单元格(比如A1)复制到另一个单元格(比如B1)。我还发现了如何突出显示双击单元格(A1)。当我双击A2时,它的值将替换B1中已有的值。现在突出显示A1和A2,而不是突出显示A2。我希望第二次双击以从第一次双击中删除突出显示。 我正在使用的vb是

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

If Not Intersect(target, Range("A1:A4")) Is Nothing Then
Cancel = True
target.Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If

With target.Interior
    If Not .ColorIndex = xlNone Then
        .ColorIndex = xlNone
    ElseIf Not Intersect(target, Range("A1:A4")) Is Nothing Then
        .ColorIndex = 15
    ElseIf Not .ColorIndex = 15 Then
        .ColorIndex = xlNone
    End If
End With
Cancel = True

End Sub

任何帮助都会很棒

1 个答案:

答案 0 :(得分:1)

假设您只希望突出显示一个单元格并且单元格中没有其他格式,您可以在每次双击开始时清除所有格式:

target.Parent.UsedRange.ClearFormats

或者,您可以将上一个单元格位置存储在公共变量中,然后在新单击时删除格式:

Public PreviousCell As Range

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

If Not PreviousCell Is Nothing Then PreviousCell.Interior.ColorIndex = xlNone

.... your code here ....

Set PreviousCell = target

End Sub