首页 > 解决方案 > Excel 仅使用 CTRL + 左键单击超链接

问题描述

单击单元格时,我不喜欢默认的超链接。我想对其进行调整,以便您CTRL在单击单元格时必须按下以跟随超链接。

我在 SU https://superuser.com/a/739899/465645上找到了这篇文章,它有一个好主意,但使用了“公式”,并且在评论中有这样的内容:

@工程师吐司

我认为 VBA 是唯一的方法。不过,我建议您不必使用 HYPERLINK 功能。您还可以使用 Target.Hyperlinks(1).Address (带有错误捕获)来确定单元格是否具有超链接

我的超链接不是答案中所述的“公式”方式,但我喜欢这个总体思路。有没有一种方法可以使用class modulewithapp level events来观察何时单击单元格并包含超链接并查看用户是否CTRL按下并相应地遵循超链接?

奖励:当您将鼠标悬停在超链接上时,我如何调整显示的文本以准确说明 CTRL + 单击打开超链接。

来自苏的回答:

我如何做到这一点:在第二部分中使用 URL 设置超链接:

=HYPERLINK("","http://example.com")

在 VBA 编辑器中创建一个模块:

Declare Function GetKeyState Lib "User32" (ByVal vKey As Integer) As Integer
Global Const CTRL_KEY = 17

然后工作表代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo Error1
    If Left(Target.Formula, 10) = "=HYPERLINK" Then
        If GetKeyState(CTRL_KEY) < 0 Then 'Check if CTRL is held in
            Application.EnableEvents = False
            ThisWorkbook.FollowHyperlink Mid(Target.Formula, 16, Len(Target.Formula) - 17)
            Application.EnableEvents = True
        End If
    End If

    Exit Sub

Error1:
    Application.EnableEvents = True

End Sub

更新:我有一个攻击计划,但我需要一些时间来整理它。在打开链接之前“捕获”超链接点击是不可能的。因此,唯一可行的方法是让我将页面中的所有超链接转换为“第二部分”中的超链接,然后将实际超链接设置为对单元格本身的引用,然后我可以修改上面的代码.

标签: excelvbahyperlink

解决方案


推荐阅读