【问题标题】:Vba double click on cell to highlight then double click another cell removes first cells highlightVba双击单元格以突出显示然后双击另一个单元格删除第一个单元格突出显示
【发布时间】:2016-07-18 21:21:35
【问题描述】:

我在上一个问题中发现,当从一系列单元格(例如 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

任何帮助都会很棒

【问题讨论】:

    标签: vba excel


    【解决方案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
    

    【讨论】:

    • 感谢@RGA,第二个解决方案是完美的!我将如何设置仅 A1:A4 的范围,因为我在 A5:A10 中有另一组数据,此时如果我双击第二个范围中的单元格,A1:A4 中突出显示的单元格将被删除。我想以 2 个突出显示的单元格结束,每个范围 1 个。
    • @cah1991 那么你应该做的是创建两个“PreviousCell”变量(例如PreviousCell1PreviousCell2),然后通过检查@的行和列来检查哪个范围被双击987654326@。使用 PreviousCell1 引用 A1:A4 和 PreviousCell2 引用 A5:A10,并且只为相应的区域重置一个(相应地使用 If 语句)
    • 谢谢@RGA 我已经添加了这是结束但现在第一个范围没有突出显示,只有第二个范围是。我错过了什么? Public PreviousCell2 As Range If Not PreviousCell2 Is Nothing Then PreviousCell2.Interior.ColorIndex = xlNone With target.Interior If Not .ColorIndex = xlNone Then .ColorIndex = xlNone ElseIf Not Intersect(target, Range("A5:A10")) Is Nothing Then .ColorIndex = 15 ElseIf Not .ColorIndex = 15 Then .ColorIndex = xlNone End If End With Cancel = True Set PreviousCell2 = target End Sub
    • @cah1991 你能用那个问题和代码打开一个新问题,并在这里评论新问题的链接吗?评论中的代码很难阅读,从技术上讲这是一个新问题
    • 感谢@RGA,这是指向新问题stackoverflow.com/questions/38500441/…的链接
    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2016-11-24
    • 2020-04-29
    • 2012-01-10
    • 2020-02-19
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多