我搜索得很远,但找不到这个简单问题的答案。我想在excel中创建一个自定义函数,它将创建一个超链接。
Excel有一个内置的超链接功能,其工作方式如下:
=Hyperlink(link_location, display_text)
我想创建一个名为CustomHyperlink的函数,该函数接受一个参数,并返回带有该参数的google查询的超链接。仅仅为了问题,我们假设传递的参数是一个字母数字字符串,没有空格。
基本上,呼叫
=CustomHyperlink("excel")
应与调用
相同=Hyperlink("http://www.google.com/search?q=excel", "excel")
这似乎是一个如此简单的任务,但我绝对找不到一种方法来实现这个功能。
有人可以提供一些快速帮助吗?
答案 0 :(得分:1)
我可以提供部分解决方案,更新现有的超链接。如果您正在使用它,那么这只会发生,例如
CustomHyperlink(A1)
A1
包含所需的serch术语
使用,
=CustomHyperlink(A1)
A1
put excel
当UDF运行时,它将更新指向Google的超链接输入的搜索字词
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
答案 1 :(得分:0)
在VBA编辑器中,您可以使用
ThisWorkbook.FollowHyperlink Address:=(strWebsite), NewWindow:=True
将带您进入该特定网站,并围绕该网站构建一个功能,以引导您访问所需的网站。
答案 2 :(得分:0)
好主意虽然这是不可能的。
您似乎希望将单元格的公式作为一个事物(您的自定义函数调用),并将值作为另一个(超链接/ URL),这是不可能的。
通过VBA添加超链接的正确方法是使用Hyperlinks属性,但无法通过Worksheet UDF调用此属性(由于上述原因)。
使用内置= Hyperlink()工作表函数有什么问题?您可以按如下方式有效地对URL进行参数化(其中单元格A1 = Excel):
=HYPERLINK("http://www.google.com/search?q="&A1)
答案 3 :(得分:0)
由于creamyegg建议的原因,你不能直接这样做,但是有一种方法可以实现功能,尽管有一点性能考虑。
您可以使用Worksheet_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
性能考虑当然是不稳定的Worksheet_Change
事件,因为这可以真正杀死大型复杂的工作簿。