如果单元格文本为vbred,则保留超链接

时间:2019-07-01 07:48:11

标签: excel vba hyperlink

我有一些代码可以删除范围中的超链接。我想做的是如果单元格文本是vbRed,则保留超链接。下面的代码似乎删除了所有单元格中的所有链接。

    Sub RemoveHyperlinks()


    Dim rng As Range
    Dim cel As Range


    Set rng = Range("CourseName")

   For Each cel In rng

    If cel <> vbRed Then

    cel.Hyperlinks.Delete

    With rng.Borders
        .LineStyle = xlContinuous
        .Color = vbBlack
        .Weight = xlThin
    End With

    End If
    Next cel

End Sub

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您的代码检查cel的值是否为255(vbRed的值)。您需要像下面那样将检查范围缩小到cel变量的属性:

If cel.Font.Color <> vbRed

答案 1 :(得分:0)

我建议您先运行以下代码来获取单元格的ColorIndex。此代码将在消息框中向您显示ColorIndex

Sub GetColorIndex()
    MsgBox "Cell Interior ColorIndex: " & Range("A1").Interior.ColorIndex
    MsgBox "Cell Font ColorIndex: " & Range("A1").Font.ColorIndex
End Sub

获取ColorIndex后,将该值用作IF条件的参数。假设单元格A1的字体颜色为红色,则消息框将向您显示ColorIndex=3。然后使用以下代码删除超链接。

Sub RemHyperlink()
    If Range("A1").Font.ColorIndex = 3 Then
        Range("A1").Hyperlinks.Delete
    End If
End Sub
  

编辑答案

选中此行。 If cell.DisplayFormat.Font.ColorIndex <> 3 Then完整子集如下。

Sub RemoveHyperlinks()

    Dim rng As Range
    Dim cell As Range

    On Error Resume Next
    Set rng = Range("CourseName")
    On Error GoTo 0
    If rng Is Nothing Then
    Exit Sub
    End If


    For Each cell In rng
        If cell.DisplayFormat.Font.ColorIndex <> 3 Then
         cell.ClearHyperlinks
         cell.Font.Underline = False
         End If
    Next cell

End Sub