2013-05-06 45 views
0

我有一个工作表事件宏,当单击超链接公式时会触发 - 它会“突出显示”(更改单元格内部颜色)超链接目标单元格,使其更加可见给最终用户。当用户不再需要它时,如何将目标单元格更改为“不突出”(即将单元格内部颜色更改为白色)?即我已经把高价转为“开”,我该如何将其“关”?下面的代码变成高亮“开”:如何在不再活动时更改单元格的颜色属性

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim ControlPoint As String 
Dim RowVar As Integer 
Dim Destination As String 

If InStr(1, Target.Cells(1, 1).Formula, "HYPERLINK") = 0 Then Exit Sub 

ControlPoint = Target.Value 

RowVar = Application.WorksheetFunction _ 
      .Match(ControlPoint, _ 
      Sheets("Control Point Log").Range("c1:c700"), 0) 

Destination = "C" & RowVar 

Sheets("Control Point Log").Range(Destination).Select 
    With Selection.Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .ThemeColor = xlThemeColorDark2 
     .TintAndShade = -9.99786370433668E-02 
     .PatternTintAndShade = 0 
    End With 

End Sub 
+0

你不得不决定你怎么会知道用户“不再需要”突出显示。这是棘手的部分。你*可以*设置一个OnTime()调用,在5秒之后(例如)重置格式。否则,很难说什么事件会引发细胞“不高兴”。 – 2013-05-06 23:42:36

+0

这是一个好主意,你能帮我设置一下吗? – 2013-05-07 00:11:31

回答

0

这一切都在工作表模块中,您要捕捉事件的工作表模块。注意:您可能需要修改“Sheet1”中的工作表代码名称,无论您的工作表的代号是什么。

我简化了突出显示,改变了填充颜色:我不知道你的“默认”格式应该是什么样子。

编辑:现在突出的第二片

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Const CLEAR_AFTER_SEC As Long = 4 
Dim f As Range, trg As Range, addr As String 
Dim sht As Worksheet 
    Set trg = Target.Cells(1) 

    If InStr(1, trg.Formula, "HYPERLINK") = 0 Then Exit Sub 

    Set sht = ThisWorkbook.Sheets("Sheet2") 'edit here for your sheet name 
    Set f = sht.Range("C1:C700").Find(trg.Value, , xlValues, xlWhole) 

    If Not f Is Nothing Then 
     addr = f.Address(False, False) 
     Highlight addr 

     f.Parent.Activate 
     Application.Goto f 

     Application.OnTime Now + TimeSerial(0, 0, CLEAR_AFTER_SEC), _ 
        "'Sheet1.Highlight """ & addr & """, True'" 
    End If 

End Sub 

Public Sub Highlight(rng As String, Optional reverse As Boolean = False) 
    'edit sheet name to suit... 
    With ThisWorkbook.Sheets("Sheet2").Range(rng).Interior 
     .Color = IIf(reverse, vbWhite, vbRed) 
    End With 
End Sub 
+0

谢谢,我会尝试一下,让你知道它是怎么回事。 – 2013-05-07 02:00:20

+0

我无法得到这个工作 - 就像我的代码,它将突出显示“打开”,但并没有关闭它......我想因为超链接的位置和超链接所在的单元格的位置在不同的纸张 - 我做了调整,删除了Me.Range,但它仍然不起作用。 – 2013-05-07 17:09:21

+0

看到我编辑的代码。 – 2013-05-07 17:29:50