2012-03-05 175 views
2

我已经搜索了很多,但找不到这个简单问题的答案。我想在Excel中创建一个自定义函数,它将创建一个超链接。在excel中创建一个自定义的超链接功能

Excel中有一个内置的超链接功能的工作原理是这样的:

=Hyperlink(link_location, display_text) 

我想创建一个名为CustomHyperlink函数,它接受一个参数,并返回一个超链接到谷歌查询与该参数。为了这个问题,我们假设传递的参数是一个字母数字字符串,没有空格。

本质,呼吁

=CustomHyperlink("excel") 

应与调用

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

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

任何人都可以提供一些快速帮助?

回答

0

在VBA编辑器,你可以使用

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

,将带你到特定的网站,只是围绕打造一个功能,您导航到你所需要的网站。

+0

如果这被包裹到工作表UDF,然后在页面/工作簿等新布劳尔窗口将被加载的任何重新计算。我想这不会是理想的。 – markblandford 2012-03-05 09:56:54

0

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

你似乎想有细胞的公式为一两件事(您的自定义函数调用),但有值作为另一个(超链接/ URL),这简直是不可能的。

通过VBA的正确方法添加超链接是使用超链接属性,但它不是可以调用这个属性,通过一个工作表UDF(因为上面的原因)。

什么是错的只是使用内置的超链接=()工作表函数?你可以有效地进行参数化您的网址如下(其中单元格A1 = Excel中):

=HYPERLINK("http://www.google.com/search?q="&A1) 
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事件,因为这真的可以杀死大型,复杂的工作簿。

1

我可以提供部分解决方案,其中一个将更新一个现有的超链接。如果你正在使用它像,说

CustomHyperlink(A1) 

A1包含所需serch主页项

要使用,

  1. 在单元格中输入你的UDF的公式,例如=CustomHyperlink(A1)
  2. 这不仅使SENCE
  3. 在单元格上创建超链接(右键单击,超链接...)。这可以是任何超链接,有效或无效
  4. 把所需的搜索词引用的单元格,例如,在A1excel

当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 
+0

它确实有手动创建链接的额外步骤,但它是一个非常巧妙的解决方案,并且工作得非常好。谢谢! – tozevv 2014-09-12 09:04:30