在Excel中创build一个自定义的超链接函数

我已经search了很多,但无法find这个简单的问题的答案。 我想在Excel中创build一个自定义函数,这将创build一个超链接。

Excel有一个内置的超链接function,像这样工作:

=Hyperlink(link_location, display_text) 

我想要创build一个名为CustomHyperlink的函数,它接受一个参数,并返回一个带有该参数的谷歌查询的超链接。 只是为了这个问题,让我们假设传递的参数是一个字母数字string,没有空格。

基本上,调用

 =CustomHyperlink("excel") 

应该和呼叫一样

 =Hyperlink("http://www.google.com/search?q=excel", "excel") 

这似乎是这样一个简单的任务,但我绝对找不到一个方法来使这个function。

谁能提供一些快速的帮助?

我可以提供一个部分的解决scheme,将更新现有的超链接。 如果你使用它,这只会让你感觉像说

 CustomHyperlink(A1) 

A1包含所需的serch术语

要使用,

  1. 在单元格中input您的UDF公式,例如=CustomHyperlink(A1)
  2. 在单元格上创build超链接(右键单击,超链接…)。 这可以是任何超链接,有效或无效
  3. 把所需的search词汇放在引用的单元格中,例如在A1放入excel

当UDF运行时,它将更新超链接到谷歌input的search词

 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 

在VBA编辑器中,您可以使用

 ThisWorkbook.FollowHyperlink Address:=(strWebsite), NewWindow:=True 

这将带你到特定的网站,只是build立一个function,导航到你需要的网站。

好主意,虽然这是不可能的。

你似乎想要单元格的公式作为一件事(你的自定义函数调用),但又有价值作为另一个(超链接/ URL),这是不可能的。

通过VBA添加超链接的正确方法是使用超链接属性,但无法通过工作表UDF(由于上述原因)调用此属性。

使用内置的= Hyperlink()工作表函数有什么问题? 您可以按如下方式有效地对URL进行参数化(单元格A1 = Excel):

 =HYPERLINK("http://www.google.com/search?q="&A1) 

你不能直接出于creamyegg所build议的原因,但是有一种方法可以实现这个function,尽pipe有一点性能方面的考虑。

您可以使用Worksheet_Change事件跟踪您的UDF的存在,然后在那里处理超链接添加。

您需要设置一个空函数来允许这种情况发生,否则无论何时在单元格中input=CustomHyperlink... ,Excel都会抛出错误。

下面应该工作,没有真正的时间来testing。

 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事件,因为这可以真正杀死大型复杂的工作簿。