在excel中创建一个自定义的超链接功能
我已经搜索了很多,但找不到这个简单问题的答案。我想在Excel中创建一个自定义函数,它将创建一个超链接。在excel中创建一个自定义的超链接功能
Excel中有一个内置的超链接功能的工作原理是这样的:
=Hyperlink(link_location, display_text)
我想创建一个名为CustomHyperlink函数,它接受一个参数,并返回一个超链接到谷歌查询与该参数。为了这个问题,我们假设传递的参数是一个字母数字字符串,没有空格。
本质,呼吁
=CustomHyperlink("excel")
应与调用
=Hyperlink("http://www.google.com/search?q=excel", "excel")
这似乎是这样一个简单的任务,但我绝对不能找到一种方法来使该功能。
任何人都可以提供一些快速帮助?
在VBA编辑器,你可以使用
ThisWorkbook.FollowHyperlink Address:=(strWebsite), NewWindow:=True
,将带你到特定的网站,只是围绕打造一个功能,您导航到你所需要的网站。
好主意,虽然这是不可能的。
你似乎想有细胞的公式为一两件事(您的自定义函数调用),但有值作为另一个(超链接/ URL),这简直是不可能的。
通过VBA的正确方法添加超链接是使用超链接属性,但它不是可以调用这个属性,通过一个工作表UDF(因为上面的原因)。
什么是错的只是使用内置的超链接=()工作表函数?你可以有效地进行参数化您的网址如下(其中单元格A1 = Excel中):
=HYPERLINK("http://www.google.com/search?q="&A1)
您不能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
事件,因为这真的可以杀死大型,复杂的工作簿。
我可以提供部分解决方案,其中一个将更新一个现有的超链接。如果你正在使用它像,说
CustomHyperlink(A1)
是A1
包含所需serch主页项
要使用,
- 在单元格中输入你的UDF的公式,例如
=CustomHyperlink(A1)
这不仅使SENCE
- 在单元格上创建超链接(右键单击,超链接...)。这可以是任何超链接,有效或无效
- 把所需的搜索词引用的单元格,例如,在
A1
把excel
当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
它确实有手动创建链接的额外步骤,但它是一个非常巧妙的解决方案,并且工作得非常好。谢谢! – tozevv 2014-09-12 09:04:30
如果这被包裹到工作表UDF,然后在页面/工作簿等新布劳尔窗口将被加载的任何重新计算。我想这不会是理想的。 – markblandford 2012-03-05 09:56:54