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:
我有一个工作簿,所有数据都通过用户表单管理,无需手动输入。我想通过创建一个名为 "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: