Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Hyperlinks anpassen
#1
Hallo Zusammen,

mit folgendem Befehl möchte ich den 2ten Hyperlink in der Zeile C11:N11 anpassen.

Range("C11:N11").Hyperlinks(iMax).SubAddress = Replace(.Hyperlinks(iMax).SubAddress, "Firma 1", "Firma " & iMax)

bekomme jedoch den Laufzeitfehler 9 - Index nicht im  gültigen Bereich.

iMax ist aber 2.

Hat jemand eine Idee wo der Fehler liegt?

VG Michael
Antworten Top
#2
Hallo,

ich kann nur raten und tippe darauf, dass du falsch referenzierst:
du kannst entweder:
Code:
Range("C11:N11").Hyperlinks(iMax).SubAddress = Replace(Range("C11:N11").Hyperlinks(iMax).SubAddress, "Firma 1", "Firma " & iMax)
oder so
Code:
with Range("C11:N11")
   .Hyperlinks(iMax).SubAddress = Replace(Hyperlinks(iMax).SubAddress, "Firma 1", "Firma " & iMax)
end with
arbeiten


richtig geraten?

Grüße, Ulrich
[-] Folgende(r) 1 Nutzer sagt Danke an losgehts für diesen Beitrag:
  • Icepic
Antworten Top
#3
Hallo Ulrich,

danke, gut geraten

Gruß Michel
Antworten Top
#4
Hallo Ulrich,

der Laufzeitfehler ist zwar weg, aber es werden beide Hyperlinks geändert.

Ich möchte aber nur den 2ten in Zelle D11 geändert haben.

Gruß Michael
Antworten Top
#5
Hallo,

Zitat:Ich möchte aber nur den 2ten in Zelle D11 geändert haben.
oh, ich wusste gar nicht, dass man zwei Hyperlinks in einer einzelnen Zelle haben kann, aber wieso nicht?! Ich kann es jedenfalls gerade nicht testen.

An deiner Stelle würde ich damit experimentieren:
Code:
Range("D11").Hyperlinks(1)....
'oder
Range("D11").Hyperlinks(2)....

kommst du damit weiter?
Grüße, Ulrich
Antworten Top
#6
Hallo Ulrich,

ich habe nicht zwei Hyperlinks in der Zelle D11 sondern einen in der Zelle C11 z.Bsp. Firma 1 und eine Kopie in der Zelle D11 die auch "Firma 1" heißt und nun auf "Firma 2" umbenannt werden soll. Im weiteren Verlauf der Bearbeitung wird immer wieder die Zelle C11 - Firma 1 kopiert und muss dann umbenannt werden bis in der Range(C11:N11) die Hyperlinks Firma 1 bis Firma 12 stehen.

Ich verstehe nicht, warum der replace auch den Hyperlink in der Zelle C11 umbenennt obwohl die Variable iMax eindeutig der Wert 2 enthält.

Nach meinem Verständnis zeigt der  Hyperlinks(2) eindeutig auf den zweiten Wert in Range(C11:N11) also auf D11.

VG Michael
Antworten Top
#7
Hallo,

Zitat:Nach meinem Verständnis zeigt der  Hyperlinks(2) eindeutig auf den zweiten Wert in Range(C11:N11) also auf D11.
und woher nimmst du das "Verständnis"? Mir scheint das vielmehr falsch angenommen.

Ich habe gerade mal kurz ausprobiert: wenn ich Hyperlinks anlege, wird der Index in der Reihenfolge vergeben, in der sie angelegt werden. Das macht in sofern auch sinn, da Hyperlinks eine collection ist.
Aber das ist jetzt auch nur eine Annahme von mir, ich habe es mir nicht in der Dokumentation angesehen (das solltest du tun, wenn du mit Eigenschaften Arbeitest, die du nicht kennst).

Dein "weiterer" Verlauf ist mir nicht klar geworden. 

Ich verstehe nicht, wieso du nicht einfach - wie von mir vorgeschlagen - die Zelle angibst, deren Hyperlink du ansprechen möchtest.

Mir erscheint es zwar nicht als sinnvoll, aber wenn du unbedingt mit dem Bereich C11:N11 arbeiten möchteset (kann ja evtl. auch sinnvoll sein), dann kannst du die Zelle D11 ja auch so ansprechen:
Range("C11:N11").Cells(2)
und entsprechend ihren Hyperlink:
Range("C11:N11").Cells(2).Hyperlinks(1)


Falls du mal nen Hyperlink hast, und nicht weißt, in welcher Zelle er sich befindet, kannst du das übrigens ganz einfach so rausfinden:
msgbox Range("C11:N11").Hyperlinks(2).Parent.Address(0,0)


Ich denke, du müsstest eigentlich alles haben, was du benötigst, oder?
Grüße, Ulrich
Antworten Top
#8
Hallo Ulrich,

leider bin ich immer noch nicht weiter mit meinem Problem.

Ich füge mal die Überwachungsergebnisse der Collection Hyperlinks bei, einmal vor Ausführung der Befehlszeile

Range("C11:N11").Hyperlinks(2).SubAddress = Replace(Range("C11:N11").Hyperlinks(2).SubAddress, "Firma 1", "Firma " & iMax)

und einmal nach der Ausführung. Hieraus ist zu erkennen, dass die Subadresse beider Hyperlinks die zu diesem Zeitpunkt vorhanden
sind geändert werden.

Die Befehlszeile

MsgBox Range("C11:N11").Hyperlinks(iMax).Parent.Address(0, 0)

verweist auf D11.

Hast du noch eine Idee?

Gruß Michael


Angehängte Dateien Thumbnail(s)
       
Antworten Top
#9
Hallo,

wenn ich iMax=2 setze und deine Codezeile
Code:
Range("C11:N11").Hyperlinks(2).SubAddress = Replace(Range("C11:N11").Hyperlinks(2).SubAddress, "Firma 1", "Firma " & iMax)
ausführe, dann wird bei mir nur ein Hyperlink ersetzt.
Da Hyperlinks(2) auf nur einen Hyperlink verweist, kann ich nicht richtig glauben, dass deine Bilder wirklich mit der einmaligen Ausführung dieser Codezeile übereinstimmen. Ich hänge dir eine Datei an, die auf meinem Rechner das Gegenteil beweist: wenn du das Makro ausführst, dann wird bei mir nur einer der drei Hyperlinks verändert.
Vielleicht kannst du mir ja auch eine Datei anhängen, die mich in Erstaunen versetzt.

Aber zurück zu deiner eigentlichen Fragestellung:
Zitat:mit folgendem Befehl möchte ich den 2ten Hyperlink in der Zeile C11:N11 anpassen.
Warum wehrst du dich gegen
Range("D11").Hyperlinks(1).....
??
Ich habe dir auch andere Alternativen genannt, die du nicht kommentiert hast.

Ich bemerke, dass ich hier genervt reagiere, denn ich habe dir bereits verschiedene Möglichekeiten genannt, wie du auf den Hyperlink der Zelle D11 zugreifen kannst, die du unkommentiert lässt und du fragst mich, ob ich weitere Ideen hätte?!

Ich antworte hier im Thread nicht mehr auf Codeschnipsel, sondern nur noch auf ausführbare Codes (komplette Makros), die ich mit Copy & Paste einfügen kann, oder Beispieldateien.

Mit welcher Excel-Version arbeitest du, ich habe Excel2007 unter Win7 laufen?

Grüße, Ulrich


Angehängte Dateien
.xlsm   Hyperlink.xlsm (Größe: 14,13 KB / Downloads: 3)
Antworten Top
#10
Hallo Ulrich,

die beiden screenshots entsprechen genau dem Zustand von Hyperlinks vor und nach dem Replace!

Wenn ich dann dein Makro ausführe, dann passiert nichts. Die Zellen C11:E11 enthalten weiterhin
Firma 1'A1.

Auch wenn ich nicht Alles, was du mir empfohlen hast, kommentiert habe, so habe ich es doch ausprobiert,
konnte aber das gewollte Ergebnis nicht erreichen. Dies sollte keine Missachtung deiner Vorschläge sein.

Es ist mir doch auch schleierhaft warum das logisch Richtige in der Befehlszeile bei mir nicht funktioniert.

Warum wehre ich mich gegen Range("D11"). Hyperlinks(1).

In dem zugrunde liegenden Makro muss das Replace 48 mal in verschiedenen Zeilen ausgeführt werden.
z.Bsp. Range("C11:N11") und Range("C48:N48") usw. Die Ausführung des Makros wird über einen Button
angestoßen. Ich muss also über einen Index auf den Hyperlink zugreifen können.

Ich werde dir dann eine abgespekte Version meines Tabelle ersstellen die hoffentlich mein Problem erkennbar macht.

Die kann jedoch bis zum Wochenende dauern, da die Excel -Programmierung nicht meine Hauptaufgabe ist.

Ich arbeite mit WIN 7 und EXCEL 2010 und WIN 10 und EXCEL 2016.

Grüße Michael
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste