Excel超链接基于行运行用户表单

时间:2016-07-13 21:04:45

标签: excel vba excel-vba excel-2007

我有一个工作簿,所有数据都是通过userforms管理的,没有手动输入。我希望通过将其中一个名为“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

任何变通方法或更好的想法?

3 个答案:

答案 0 :(得分:2)

您需要通过Ctrl-K快捷方式插入超链接,它可以正常工作:

Adding new hyperlink

和此代码

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

返回

Message box result

但它会变得更好 - 您甚至不需要解析网址中的行号,因为Hyperlink对象提供了Range方法,您可以使用确定点击它的行:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

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

End Sub

enter image description here

答案 1 :(得分:0)

HyperLink功能不起作用 - 它不打算触发FollowHyperlink事件。

请参阅:

Worksheet_FollowHyperlink and MsgBox not working in Excel 2010

FollowHyperlink event not working

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

答案 2 :(得分:0)

在一个单元格中:

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

在一个模块中:

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

这种方法归功于lori_m:Running VBA from a HYPERLINK()