Excel VBA - Hyperlinkerstellung klappt nicht

fanatiXalpha

Fleet Admiral
Registriert
Aug. 2011
Beiträge
13.707
Hallo Leute,

ich wollte per VBA Hyperlinks erstellen, aber das klappt leider nicht so richtig.
Der Code (ein Teil davon) fürs Hyperlink erstellen sieht so aus:
Code:
With ThisWorkbook.Worksheets("Comparison")
.Hyperlinks.Add Anchor:=.Range("C3"), _
SubAddress:=ComboBox1.Text, _
ScreenTip:="Link zum Blatt", _
TextToDisplay:=ComboBox1.Text

End With

Und der Fehler lautet:
"Laufzeitfehler 450:
Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft"

Bisher hab ich nicht herausgefunden woran es liegt, noch konnte ich den Fehler beseitigen

Ich hab eine Userform, mit der ich zwei Tabellenblätter auswählen kann.
Nachdem diese ausgewählt wurden und Daten aus bestimmten Bereichen kopiert wurden sollen Links zu diesen Tabellenblättern erstellt werden.
Nur klappt das eben nicht...

Wisst ihr wie ich das lösen kann?
 
Zuletzt bearbeitet:
Ich würd sagen, es muss vor SubAdress zumindest auch noch Address:="" stehen. Ist in der ComboBox1 auch ein gültiger Tabellenname enthalten?
 
Cassius:
deins hat nicht geklappt

killy:
ich hab doch noch mal geschaut, tatsächlich ist Address Pflicht und nicht Optional wie ich es zunächst in Erinnerung hatte...
ich hatte aber auch mal ein Makro aufgenommen und da hatte er Address freigelassen (also nur Address:= "", _ geschrieben) weil er ja nicht in ein anderes Dokument oder so geht
damit funktioniert es leider auch nicht..
Da kommt dann ein "Anwendungs- oder objektdefinierter Fehler"....
so ein scheiß
 
Kann ich machen.
Nur wird das heute aus zeitlicher Sicht nichts mehr
Aber morgen kann ich dir das dann ohne echte Daten zur Verfügung stellen

Ich werde noch einen Versuch mit "Address" starten in dem ich halt die Datei angebe...
Ergänzung ()

so, ich hab das ganze mal gesäubert und eine Beispieldatei daraus erstellt: Anhang anzeigen Beispiel - Kopie.xlsx
Du musst sie dann noch wieder in .xlsm umbennen, da xlsm hier nicht gestattet ist.


Ich hab ne idee, weis aber nicht ob das auf Deine Tabelle passt.
was meinst du damit?


EDIT:
Gott, ich schaff nicht mal ganz einfache Sachen
Ich dachte mir, ich schreib den Tabellenblattnamen in einen Bereich (Zelle B2) und dann eins drunter setze ich dann eine Hyperlinkformel ein.
Also in C2 würde dann sowas wie =HYPERLINK(B2; "Link zum Tabellenblatt") stehen.
Aber wenn ich das mache, dann meint er nur "Die angegebene Datei konnte nicht gefunden werden".
Kann doch gar nicht sein, er muss doch nur innerhalb der Datei suchen....
ich zweifel grad an mir selbst so langsam
 
Zuletzt bearbeitet:
Datei kann nicht geöffnet werden :)

Wenn Du diesen Code:

Sub Makro1()
'
' Makro1 Makro
'

'
Range("A2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Tabelle2!A1", TextToDisplay:="B1"
End Sub


Mit einer Schaltfläche versiehst, dann erstellt das Macro einen Hyperlink auf das Tabellenblatt2, Zelle A1.

Wenn Du das ganze bei Eingabe automatisiert haben möchtest, musst Du die Zelleingaben überwachung einstellen.
 
auch wenn du die Dateiendung auf xlsm änderst?

EDIT:
ja, aber jetzt ist das Tabellenblatt statisch
ich möchte ja aber einen dynamischen Hyperlink
je nachdem welches Tabellenblatt ausgewählt wird, wird ein entsprechender Link gesetzt
insofern darf SubAddress ja nicht statisch sein... oder?
 
Zuletzt bearbeitet:
Du kennst ja das Dokument
im Tabellenblatt "Comparison" kann ich mit "Show ControlPanel" mir einer Userform anzeigen lassen, mit der ich Tabellenblätter auswählen kann.
wenn ich die dann ausgewählt habe und auf "Vergleichen" klicke, dann werden Daten aus entsprechenden Bereichen kopiert und zusätzlich hätte ich gerne dann Links zu diesen Tabellenblättern erstellt
nur das krieg ich eben nicht hin -.-
wenn du im VBA Editor schaust unter UserForm-> Vergleichen
dann findest du den entsprechenden Code dazu

aber der bringt bisher nur Fehler...
 
Ja habs gefunden...
Das Problem ist, dass Du bei Adress:= auf "" , also quasi 0 verweist :)
Ebenso ist .Range("C3") angeben, das Feld ist allerdings leer.

Des Weiteren muss man die Linkadresse Variabel gestalten.

Edit:

Funzt!:
Private Sub VergleichenButton_Click()


'Übertragen der Daten aus ausgewähltem Arbeitsblatt in die Tabelle des "Comparsion"-Arbeitsblattes
ThisWorkbook.Worksheets(ComboBox1.Text).Range("B5:I12").Copy
ThisWorkbook.Worksheets("Comparison").Range("Y7").PasteSpecial

ThisWorkbook.Worksheets(ComboBox2.Text).Range("B5:I12").Copy
ThisWorkbook.Worksheets("Comparison").Range("Y28").PasteSpecial

Range("B2") = ComboBox1.Text
Range("F2") = ComboBox2.Text


Range("B2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & ComboBox1.Text & "'!A1", TextToDisplay:=ComboBox1.Text

Range("F2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & ComboBox2.Text & "'!A1", TextToDisplay:=ComboBox2.Text

'With ThisWorkbook.Worksheets("Comparison")
'.Hyperlinks.Add Anchor:=.Range("F2"), _
Address:=ThisWorkbook.Worksheets(ComboBox2.Text), _
ScreenTip:="Link zum Tabellensatz", _
TextToDisplay:="ComboBox2.Text"

'End With


Unload Me

ThisWorkbook.Sheets("Comparison").Range("M2").Select

End Sub
 
Zuletzt bearbeitet:
bei Address hab ich auf "" verwiesen, weil ich mich innerhalb des Dokuments bewege
der Makrorekorder hat es ebenfalls so aufgezeichnet...

naja, C3 soll ja leer sein, weil da der Hyperlink erst reingeschrieben wird, in ein freies Feld
wieso war das nicht in Ordnung?

okay, gut danke :)
bin zwar schon wieder daheim, aber ich probier es morgen gleich mal aus
vielen Dank!


EDIT:
klappt wunderbar
vielen Dank
ich hab halt die Nomenklatur für die Hyperlinks vergessen
das mit dem 'Tabellenname'!A1
ich dachte das übernimmt er automatisch
naja, wieder was dazu gelernt
vielen Dank!

EDIT2:
also das ich zuerst einen Bereich auswähle und dann nachher bei Anchor Selection reinschreibe muss nicht sein
es reicht schon Range("B2") in Anchor reinzuschreiben.
Mein Fehler war wirklich die falsche Nomenklatur für die Address bzw. Subaddress
 
Zuletzt bearbeitet:
Die Tools, bzw. der Makro-Recorder ist ein guter Einstieg :)

Hab mich mit VBA eher privat auseinandergesetzt und dann die Fertigkeiten im Beruf angewandt.
Seit einem Arbeitgeberwechsel komm ich aber nur noch selten dazu mal programme zu schreiben weil es einfach nicht gebraucht wird.
 
Zurück
Oben