在excel中创建自定义超链接函数
我到处找了,但找不到这个简单问题的答案。我想在excel中创建一个自定义函数,它将创建一个超链接 Excel有一个内置的超链接功能,其工作原理如下:在excel中创建自定义超链接函数,excel,vba,hyperlink,Excel,Vba,Hyperlink,我到处找了,但找不到这个简单问题的答案。我想在excel中创建一个自定义函数,它将创建一个超链接 Excel有一个内置的超链接功能,其工作原理如下: =Hyperlink(link_location, display_text) 我想创建一个名为CustomHyperlink的函数,它接受一个参数,并使用该参数返回指向google查询的超链接。为了回答这个问题,我们假设传递的参数是一个字母数字字符串,没有空格 基本上,打电话 =CustomHyperlink("excel") 应该和打电话
=Hyperlink(link_location, display_text)
我想创建一个名为CustomHyperlink的函数,它接受一个参数,并使用该参数返回指向google查询的超链接。为了回答这个问题,我们假设传递的参数是一个字母数字字符串,没有空格
基本上,打电话
=CustomHyperlink("excel")
应该和打电话一样
=Hyperlink("http://www.google.com/search?q=excel", "excel")
这似乎是一项如此简单的任务,但我绝对找不到实现此功能的方法
有人能提供一些快速帮助吗?在VBA编辑器中,您可以使用
ThisWorkbook.FollowHyperlink Address:=(strWebsite), NewWindow:=True
这将带您访问特定的网站,并围绕该网站构建一个功能,将您导航到所需的网站。好主意,尽管这是不可能的 您似乎希望将单元格的公式作为一件事(自定义函数调用),而将值作为另一件事(超链接/URL),这是不可能的 通过VBA添加超链接的正确方法是使用Hyperlinks属性,但无法通过工作表UDF调用此属性(由于上述原因) 仅使用内置的=Hyperlink()工作表函数有什么问题?您可以按如下方式有效地参数化URL(其中单元格A1=Excel):
由于creamyegg建议的原因,您不能直接这样做,但是有一种方法可以实现该功能,尽管需要考虑一些性能问题 您可以使用
工作表\u Change
事件跟踪UDF的存在,然后在那里处理超链接添加
您需要设置一个空函数来允许这种情况发生,否则每当您在单元格中输入=CustomHyperlink…
时,Excel将抛出一个错误
下面的内容应该是有效的,没有真正的时间来测试
Private Sub worksheet_change(ByVal target As Range)
Dim SearchValue As String
If LCase(Left(target.Formula, 16)) = "=customhyperlink" Then
SearchValue = Mid(target.Formula, 19, Len(target.Formula) - 20)
target.Value = SearchValue
target.Hyperlinks.Add target, "http://www.google.com/search?q=" & SearchValue, , "Search Google for " & SearchValue, SearchValue
End If
End Sub
性能考虑因素当然是volatileWorksheet\u Change
事件,因为这确实会杀死大型、复杂的工作簿。我可以提供一个局部解决方案,它将更新现有的超链接。这只有在你像这样使用它时才有意义
CustomHyperlink(A1)
WAREA1
包含所需的serch术语
使用
=CustomHyperlink(A1)
A1
putexcel
Function CustomHyperlink(Term As String) As String
Dim rng As Range
Set rng = Application.Caller
CustomHyperlink = Term
If rng.Hyperlinks.Count > 0 Then
rng.Hyperlinks(1).Address = "http://www.google.com/search?q=" & Term
End If
End Function
如果将其包装到工作表UDF中,则在重新计算页面/工作簿等时,将加载一个新的浏览器窗口。我想这并不理想。它确实有额外的步骤手动创建链接,但这是一个非常巧妙的解决方案,效果非常好。谢谢
Function CustomHyperlink(Term As String) As String
Dim rng As Range
Set rng = Application.Caller
CustomHyperlink = Term
If rng.Hyperlinks.Count > 0 Then
rng.Hyperlinks(1).Address = "http://www.google.com/search?q=" & Term
End If
End Function