2012-03-05 170 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