Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Automatischer Hyperlink





Frage

Hallo zusammen! Habe ein Teilekatalog fuer Installationen, der bei Auslieferung eines Teiles mit einer bestimmten "Job No." versehen wird. Sobald nun in der Spalte der "Job No." eine Nummer in eine Zelle eingegeben wird, moechte ich einen Hyperlink versehen, der einen in der Datei zum naechsten Tabellenblatt "Kunde" fuehrt und somit weitere Informationen enthaelt. Das Ganze sollte bestmoeglich automatisch geschehen, will heissen: bei Eingabe der "Job No." moechte ich nicht jedes Mal "Einfuegen/Hyerlink" und so weiter... Ich hoffe das war jetzt einigermassen verstaendlich... Leider bin ich nicht so der Excel Crack und es waere klasse, wenn ihr mir weiterhelfen koenntet! Besten Dank! Gruss uwe

Antwort 1 von coros

Moin Uwe,

kopiere nachfolgenden VBA-Code in das VBA Projekt des Tabellenblattes, in dem die Hyperlinks automatisch erzeugt werden sollen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Hyperlinks.Add Anchor:=Cells(Target.Row, Target.Column + 1), Address:="", SubAddress:= _
"Kunde!A1", TextToDisplay:="Hyperlink"
End If
End Sub



Da Du nicht geschrieben hast, in welcher Spalte Du die "Job No" eingibst, konnte ich mir eine Spalte aussuchen. Ich habe mich für Spalte A entschieden. Bei obigem Code wird, wenn in Spalte A etwas eingegeben wird, in Spalte B ein Hyperlink erzeugt, dessen sichtbarer Text Hyperlink ist und das auf die Tabelle Kunde verweist. Da es sich in Deiner Datei sicherlich um eine andere Spalte als Spalte A handelt, musst Du in dem Code in der Zeile

If Target.Column = 1 Then

eine andere Spaltenindexzahl eintragen. Die Zahl 1 steht für Spalte A, eine 2 würde für Spalte B stehen, eine 3 für C, eine 4 für D usw. Auch nehme ich mal an, dass der Text, den der Hyperlink anzeigen soll anders sein soll als der Text "Hyperlink". Ändere daher in dem Code in der Zeile

"Kunde!A1", TextToDisplay:="Hyperlink"

das Wort "Hyperlink" gegen einen anderen Text. Sollte der Blattname des aufzurufenden Tabellenblattes anders als das Wort "Kunde" sein, ändere in der gleichen Zeile das Wort "Kunde" gegen den Namen des Tabellenblattes, welches beim Betätigen des Links aufgerufen werden soll. Das Ausrufezeichen und die nachfolgende Zellbezeichnung ändere nicht.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von k.u.

Hi Coros!
Spitzenmaessig!! Klappt wunderbar!

Vielen Dank!!

Zwei "kleine" Fragen hab ich aber leider noch
- ist es moeglich auch ohne zusaetzliche Spalte bzw. ohne Textfeld?

- kann ich die Zellen von meine Spalte mit den Job No. zu bestimmten Zellen in dem Tabellenblatt der Kunden zuweisen? Bsp. wenn ich auf die Job No. von Zelle B20 klicke, moechte ich gerne die Information der Kunden des anderen Datenblattes von dieser speziellen Job No sehen...


Viele Gruesse
uwe

Antwort 3 von coros

Hallo Uwe,

mit nachfolgendem VBA Code wird Dir aus dem eingegebenen Begriff in Spalte A ein Hyperlink erzeugt, also ohne Hilfsspalte B. Außerdem wird Dir als SubAddress die Zellenbezeichnung eingetragen, die den gleichen Begriff in Tabelle Kunde enthält, wie der eingegebene. Tauschen den alten gegen den neuen Code aus.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wiederholungen As Long, Suchbegriff As Range, Addresse As String
If Target.Column = 1 Then
For Wiederholungen = 1 To Sheets("Kunde").Range("A65536").End(xlUp).Row
With Worksheets("Kunde").Range("A1:A65536")
Set Suchbegriff = .Find(What:=Cells(Target.Row, Target.Column), LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
Addresse = Suchbegriff.Address
Do
Set Suchbegriff = .FindNext(Suchbegriff)
Loop While Not Suchbegriff Is Nothing And Suchbegriff.Address <> Addresse
End If
End With
Next
Text = Cells(Target.Row, Target.Column)
Hyperlinks.Add Anchor:=Cells(Target.Row, Target.Column), Address:="", SubAddress:= _
"Kunde!" & Addresse
End If
End Sub

Auch den obigen Code musst Du wieder anpassen, da es Dir ja unheimlich schwer fällt, die Spalte anzugeben, in der die Job No eingegeben werden soll und in welcher Spalte in Blatt Kunde sich das Duplikat dazu befindet. Aber eventuell ist das ja auch streng geheim, wer weiß. Also wenn die Duplikate des eingegebenen Begriffs in Blatt Kunde in einer anderen Spalte als A stehen, dann musst Du in den Zeilen

For Wiederholungen = 2 To Sheets("Kunde").Range("A65536").End(xlUp).Row
und

With Worksheets("Kunde").Range("A1:A65536")
die Spaltenbezeichnung A gegen die Spaltenbezeichnung tauschen, die diese Begriffe enthält. Ebenfalls musst Du wieder die Spaltenindexzahl angleichen, wie auch schon in dem ersten Code, da ich wieder von Spalte A ausgegangen bin.

Das war’s. bei Fragen melde Dich wieder.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von k.u.

Hi Coros!

Bin leider am anderen Ende der Welt und somit sind doch ein paar Std dazwischen...

Geheim ist es nicht :) Sorry, habs leider vergessen. Hier noch die notwendigen Infos. Hoffe sie helfen weiter...

Also, die Job No. stehen in Spalte B in Tabellenblatt "Delievery" und es kann hierbei die gleiche Job No. oefters vorkommen. Es soll auf die Spalte A von Tabellenblatt "Customer" verweisen und somit kommt die jeweilige Job No. nur einmal vor.



Hab den folgenden Code mit dem alten ersetzt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wiederholungen As Long, Suchbegriff As Range, Addresse As String
If Target.Column = 2 Then
For Wiederholungen = 2 To Sheets("Customer").Range("A65536").End(xlUp).Row
With Worksheets("Customer").Range("A1:A65536")
Set Suchbegriff = .Find(What:=Cells(Target.Row, Target.Column), LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
Addresse = Suchbegriff.Address
Do
Set Suchbegriff = .FindNext(Suchbegriff)
Loop While Not Suchbegriff Is Nothing And Suchbegriff.Address <> Addresse
End If
End With
Next
Text = Cells(Target.Row, Target.Column)
Hyperlinks.Add Anchor:=Cells(Target.Row, Target.Column), Address:="", SubAddress:= _
"Customer!" & Addresse
End If
End Sub


-> wenn ich nun eine Job No. in Spalte B in "Deliever" eingebe und draufklicke erscheint: " A formula in this worksheet contains one or more invalid references "

irgendwas mit der Bezugsquelle stimmt leider nicht.
Wo koennte denn der Fehler liegen?
Hoffe es liegt nur an einer Kleinigkeit... Bin leider ein Neuling auf dem Gebiet

Vielen Dank nochmal fuer deine Hilfe und deine Geduld....!!

Gruesse uwe

Antwort 5 von coros

Hallo Uwe,

eigentlich sollte der Code funktionieren. Wenn der Fehler erscheint, müsste in dem Fehlerfenster auch ein Button sein, der "Debuggen" heißt. Betätige den mal und sage mir dann, welche Zeile gelb markiert wird. Besser wäre noch, wenn Du mir die Datei mal zukommen lassen könntest, dann könnte ich das mal testen. Also wenn Du willst/ kannst/ darfst, schicke die Datei an meine E-Mail:coros@excelbeispiele.de. Ich schaue mir das dann mal an. Aber binde in der Btereffzeile bitte das Wort Supportnet und den Nicknamen, unter dem Du hier psotest, mit ein, damit ich weiß, dass die Mail von Dir ist, da ich alle E-Mails, deren Absender ich nicht kenne, ungelesen lösche.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.