Excel 根据行超链接到 运行 用户窗体

Excel Hyperlink to run userform based on row

我有一个工作簿,所有数据都通过用户表单管理,无需手动输入。我想通过创建一个名为 "Edit" 的列来更轻松地编辑一行,并将其作为其公式:

=HYPERLINK("Edit:>8";"Click to Edit")

“8”是创建行时自动添加的行id号

我认为这可行,但显然超链接地址需要有效才能触发此事件:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    If Left(Target.Address, 8) = "Edit:>" Then
        editRow(Right(Target.Adress,9))
    End If    

End Sub

有任何解决方法或更好的想法吗?

HyperLink 函数不是这样工作的 - 它旨在不触发 FollowHyperlink 事件。

参见:

Worksheet_FollowHyperlink and MsgBox not working in Excel 2010

FollowHyperlink event not working

您可以尝试插入超链接(可能不是很有用)或搭载另一个事件(如 SelectionChange),尽管这可能会减慢您的速度,因为基本上每次您单击时代码都会 运行。

您需要通过 Ctrl-K 快捷方式插入超链接并且有效:

和这段代码

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    Dim rowNum As Long
    rowNum = CLng(Replace(Replace(Target.Address, "https://row", ""), ".com/", ""))

    MsgBox "You are about to edit row " & rowNum

End Sub

returns

但它变得更好——你甚至不需要从 URL 解析行号,因为 Hyperlink 对象提供 Range 方法,您可以使用它来确定单击它的行:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    MsgBox "You are about to edit " & Target.Range.Address

End Sub

在一个单元格中:

=HYPERLINK("#Tester()", "Click to Edit")

在模块中:

Function Tester()
    Debug.Print Selection.Row '<< do something with the row
    Set Tester = Selection
End Function

此方法归功于 lori_m: