2016-04-22 12 views
1

Ich versuche, Hyperlinks basierend auf dem Zelleninhalt in einem vom Benutzer ausgewählten Bereich von Zellen zu erstellen. Ich bin so weit gekommen, aber wenn es ausgeführt wird, durchläuft es eine Schleife, erzeugt aber keine Hyperlinks.Erstellen eines Hyperlinks aus Zelleninhalten in Excel VBA

Sub AcctHyperlink() 
    Dim WorkRng As Range 
    On Error Resume Next 
    Set WorkRng = Application.Selection 
    Set WorkRng = Application.InputBox("Range", "Select Range", WorkRng.Address, Type:=8) 

    For i = WorkRng.Rows.Count To 1 Step -1 
     If WorkRng.Cells(i, 1).Value <> "" Then 

      WorkRng.Cells(i, 1).Hyperlink.Add Anchor:=WorkRng.Cells(i, 1), _ 
      Adress:="https://example.com/" & WorkRng.Cells(i, 1).Value & "/search", _ 
      TextToDisplay:=WorkRng.Cells(i, 1).Value 

     End If 
    Next 
End Sub 
+0

Willkommen auf der Webseite! Weitere Informationen finden Sie auf der [Tour] (http://stackoverflow.com/tour) (und ein Abzeichen!). Wenn meine Antwort hilfreich ist, drücken Sie bitte den Pfeil nach oben. Wenn meine Antwort Ihr Problem löst, klicken Sie bitte auf das Häkchen, um anzuzeigen, dass es sich um die angenommene Antwort handelt. Vielen Dank! – cxw

Antwort

1

Edited Nichts mehr als zwei Fehler und fehlende CStr() Anrufe! Hyperlink sollte Hyperlinks sein und Adress sollte Address sein. Der Code, den Sie kompiliert haben, weil Range.ItemVariant, nicht Range zurückgibt, so kann Excel solche Fehler zur Kompilierungszeit nicht kennzeichnen. Folgende Arbeiten auf meiner Excel 2013-Installation:

Option Explicit '<--- always use this for more robust code 

Sub AcctHyperlink() 
    Dim WorkRng As Range 
    'On Error Resume Next '<--- Omit for error checking 
    Set WorkRng = Application.Selection 
    Set WorkRng = Application.InputBox("Range", "Select Range", WorkRng.Address, Type:=8) 

    Dim i as Long '<--- Need this because of Option Explicit 
    Dim addr as String '<--- ditto 
    For i = WorkRng.Rows.Count To 1 Step -1 
     If WorkRng.Cells(i, 1).Value <> "" Then 
      addr = "https://insight.metavante.org/opstopb1/OpstopServlet/Search?activityID=ViewProfileLnNote&activityType=note&activityTrgtID=undefined&activityAction=search&profileView=&accountNumber=" & CStr(WorkRng.Cells(i, 1).Value) & "&accountType=&subAccountNumber=&prcsGrpID=136&RelatedFIs=136&searchBy=account" 
       ' Note: need CStr() 
      '       V--- "Hyperlinks" 
      WorkRng.Cells(i, 1).Hyperlinks.Add Anchor:=WorkRng.Cells(i, 1), _ 
      Address:=addr, _ 
      TextToDisplay:=CStr(WorkRng.Cells(i, 1).Value) 
      '^--- "Address" two lines up 
      '    ^^^^---- Need CStr() 
     End If 
    Next 
End Sub 
+0

Danke für die Antwort auf diese Tippfehler. Der Code erstellt leider immer noch keine Hyperlinks. Ich verwende derzeit Excel 2010. Könnte das zu diesem Problem führen? – WolfReborn

+0

Möglicherweise. Gerade bemerkt --- entfernen Sie die "On Error Resume Next" aus Ihrem Code. Aus diesem Grund wurden zur Laufzeit keine Fehler gemeldet. Dann sehen Sie, welchen Fehler Sie bekommen. Ich habe Excel 2010 nicht, kann es leider nicht testen. --- Ein weiterer Gedanke: Weisen Sie die Adresse zuerst in einer temporären Zeichenfolge zu und verwenden Sie dann diese temporäre Zeichenfolge als Parameter für Hyperlinks.Add. Es ist immer gut, einzelne Zeilen einfach zu halten, um das Debuggen zu vereinfachen. – cxw

+0

OK - behoben! Das verbleibende Problem war, dass Sie 'CStr()' um jede Verwendung von 'Value' benötigen. Ich habe mit zufälligen Buchstaben getestet, die ich eingegeben habe, aber Sie verwenden Zahlen, oder? ".Value" ist ein numerischer Wert, wenn die Zelle nur Ziffern enthält, also benötigen Sie 'CStr' zwei Stellen (siehe Code in editierter Antwort), um diese Zahlen in Strings für' Address' und 'TextToDisplay' umzuwandeln. – cxw

0

müssen Sie ändern sein:

Adress von Address und Hyperlink von Hyperlinks

+0

Abdellah, danke für deine Arbeit, WolfReborn zu helfen! Da Sie bereits eine Antwort geschrieben haben, können Sie Ihre Antwort nicht in Kommentaren posten? Soweit ich weiß, wird das System Wolf Ihre Antwort auch ohne die Kommentare mitteilen. Vielen Dank! – cxw

+0

Ok Danke CXW. –

+0

Mein Vergnügen! Freut mich, dass Sie hier sind und Leuten helfen! – cxw

Verwandte Themen