使用Hyperlink生成超链接时,超链接属于Sheet,不属于单元格,所以运行代码时,报错【运行时错误‘9’ 下标越界】
以下代码,请安排在模块中
当然你需要设法运行myOnkey以便使设置的快捷键生效。这里我假设设置的快捷键是Alt+x(你可以随时运行clearOnkey取消快捷键)
Sub myOnkey()
Application.OnKey "%x", "myClick"
End Sub
Sub clearOnkey()
Application.OnKey "%x"
End Sub
Sub myClick()
On Error Resume Next
Selection.Hyperlinks(1).Follow NewWindow:=True
If Error = "" Then Exit Sub
On Error GoTo 0
Dim hyperText As String
hyperText = StrConv(Selection.Formula, vbLowerCase)
If InStr(hyperText, "http://") = 0 Then Exit Sub
hyperText = Mid(hyperText, InStr(hyperText, "http://"), InStr(hyperText, ",") - InStr(hyperText, "http://") - 1)
ActiveSheet.Hyperlinks.Add anchor:=Selection, Address:=hyperText
Selection.Hyperlinks(1).Follow
Selection.Hyperlinks(1).Delete
End Sub
myClick代码会先尝试有没有手工输入的链接,如果能正确执行就结束,如果不能,尝试取得公式,如果公式中没有”http://“(你可以自己定义你自己的超链接关键字符串),也会结束,否则,会按照hyperlink函数的结构取得超链接,并为Selection临时添加超链接并执行Follow方法,执行后删除添加的超链接
以上请测试
祝你顺利
'把下面的两个过程放入Thisworkbook中
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "+{TAB}" '关闭文件时注销快捷键
End Sub
Private Sub Workbook_Open()
Application.OnKey "+{TAB}", "转到目标位置" '打开文件时添加SHIFT+TAB快捷键
End Sub
再把下面的过程放入到模块中
Sub 转到目标位置()
On Error GoTo err1
SS = ActiveCell.Formula
t = Mid(SS, InStr(SS, "#") + 1, InStr(SS, "!") - InStr(SS, "#") + 1) & _
Evaluate(Mid(SS,InStr(SS,"&")+1,InStrRev(SS,",")-InStr(SS, "&")-1))
Application.Goto Evaluate(t)
err1:
End Sub
单元格选中时,按SHIFT+TAB自动转到目标位置
有疑问私信或者追问我