我可以使用VBA使Excel忘记它跟随超链接吗?

问题描述 投票:1回答:2

我使用条件格式来影响表中包含超链接的某些单元格上的字体颜色。但是,当我遵循超链接时,它会覆盖单元格中的条件格式,这是不希望的。

如果当前单元格正上方的单元格具有相同的值,则条件格式实质上使文本不可见。它使用在整个范围(=C5=C6)中应用的公式($C$6:$C$24)。

我尝试过的事情:

  • 关闭并重新打开文件可解决此问题,因为它会重置所有接下来的超链接返回到普通超链接。但是我不想要一直关闭并重新打开。
  • 我可以使用Worksheet_FollowHyperlink事件将字体颜色改回原来的颜色,但是当我对表进行不同的排序(从而改变了条件格式应如何工作)时,条件格式为仍然禁用-现在支持以编程方式应用的字体颜色。

此问题本质上是我以前的帖子(Is there a way to make Conditional Formatting ignore the FollowedHyperlink flag?)的更新。我不再使用HYPERLINK公式,因为那不允许我使用答案中提供的Worksheet_FollowHyperlink选项。

我还阅读了提供的SuperUser线程(https://superuser.com/questions/728825/how-do-i-prevent-excel-from-changing-the-color-of-a-clicked-link/819931),该线程提供了其他一些有趣的途径,但是并没有完全使我达到目标。我现在特别要问的是,我是否可以重置跟随超链接的Excel内存。

这是我想要的,在单击链接之前和之后:

enter image description here

这是单击链接后出现的不良行为:

enter image description here

excel vba conditional-formatting
2个回答
0
投票

所以,这是我刚想出的解决方法...最终。仍然不是最佳答案,也仍然没有回答关于如何使Excel忘记它遵循特定链接的特定问题,因此,我仍然希望看到更好的答案。

但是这完成了我想完成的大部分事情。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    Target.Range.Style = "Followed Hyperlink"

End Sub

使用上面的代码将样式设置为“ Followed Hyperlink”,令人惊讶。如之前的注释中所述,即使看起来像Excel,Excel也不使用此样式。使用VBA手动设置它显然可以使条件格式起作用。

缺点:关闭和打开工作簿不再重置颜色。一种解决方法是将“跟随的超链接”样式更改为与“超链接”样式相同,但是整个工作簿中的所有链接都不会具有紫色。因此,这仍然不是最佳答案。

编辑:我应该明确指出,使用此选项将应用“跟随的超链接”样式(紫色文本)。但是,它不会覆盖条件格式,这是问题的最大部分。


0
投票

类似于以下似乎的作用是保持超链接的样式不变-基本上只需将超链接重新添加到同一单元格即可:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    With Target
        .Range.Hyperlinks.Add .Range, .Address, .SubAddress, , .TextToDisplay
    End With
End Sub

[ScreenTip引起了问题,所以我故意省略了它-我测试过的超链接没有屏幕提示。

[如果实际上这确实适合您的情况,为使其更健壮,我将在尝试在SubAddress中使用它们之前测试ScreenTipTextToDisplayHyperlinks.Add的长度。它们都是可选参数,并且单击的超链接可能没有这些属性开头。

© www.soinside.com 2019 - 2024. All rights reserved.