Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Link mit Variable setzen

Forumthread: Link mit Variable setzen

Link mit Variable setzen
27.05.2021 13:49:17
VBA
Hallo zusammen,
Ich habe einen soweit funktionierenden Code geschrieben, aber an einer Lappalie hänge ich fest... Der Code legt neue Arbeitsblätter basierend auf einem Template an und aktualisiert gleichzeitig die Kurzinformationen hierrüber in einer Übersicht. Das einzige was nicht funktioniert ist die Verlinkung der ID auf der Übersicht so dass man bei Klick auf das entsprechende Arbeitsblatt abspringt.
Ich habe hier eigentlich einen Code aus dem Internet verwendet, er funktioniert aber nicht. Wisst ihr wo mein Denkfehler liegt?

Dim ID As String
Dim Kopierzeile, IDSpalte As Integer
Dim Message, Title, Default, Zeile, Message2, Title2, Default2, Message3, Title4, Default5
Application.ScreenUpdating = False
Sheets("User Story Übersicht").Select
Kopierzeile = Cells(1, 8).Value
IDSpalte = Cells(2, 8).Value
LetzteZeile = Cells(2, "L").Value
Message = "Bitte ID angeben"    ' Set prompt.
Title = "ID Abfrage"    ' Set title.
Default = "US_"    ' Set default.
' Display message, title, and default value.
ID = InputBox(Message, Title, Default)
For Each Sheet In ActiveWorkbook.Worksheets
If Sheet.Name = ID Then
MsgBox "ID wird bereits verwendet. Bitte neue/einzigartige ID verwenden.", vbCritical
Message3 = "Bitte neue ID angeben"    ' Set prompt.
Title3 = "Erneute ID Abfrage"    ' Set title.
Default3 = "US_"    ' Set default.
ID = InputBox(Message3, Title3, Default3)
End If
Next
Message2 = "Bitte Zeile angeben vor welche eingefuegt werden soll"    ' Set prompt.
Title2 = "Zeile bestimmen"    ' Set title.
Default2 = LetzteZeile    ' Set default.
' Display message, title, and default value.
Zeile = InputBox(Message2, Title2, Default2)
Sheets("US_Template").Select
Sheets("US_Template").Copy Before:=Sheets("Templates >>")
Sheets("US_Template (2)").Select
'    Sheets("US_Template (2)").Move After:=Sheets(3)
'    Sheets("US_Template (2)").Select
Sheets("US_Template (2)").Name = ID
Cells(6, 6).Value = ID
'    Range("F4").Select
'    ActiveCell.FormulaR1C1 = "Idx"
'    Range("F5").Select
Sheets("User Story Übersicht").Select
Rows(Kopierzeile).Select
Selection.Copy
Rows(Zeile).Select
Selection.Insert Shift:=xlDown
Rows(Zeile).Select
Selection.Replace What:="US_Template", Replacement:=ID, LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveWindow.ScrollRow = 1
Cells(Zeile, IDSpalte - 1).Value = ""
Cells(Zeile, IDSpalte).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"'" & ID & "!A1"
Sheets(ID).Select
Application.ScreenUpdating = True
End Sub
Die Variable ID hat den Namen des Arbeitsplattes das angelegt wird und noch verlinkt werden soll, aber eben diese Verlinkung klappt nicht (konkret ist es dieser Teil des Codes):
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"'" & ID & "!A1"
VG
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelt! Antwort siehe unten! (owT)
27.05.2021 13:57:41
EtoPHG

Anzeige
;
Anzeige

Infobox / Tutorial

Link mit Variable in Excel setzen


Schritt-für-Schritt-Anleitung

Um einen Hyperlink mit einer Variablen in Excel zu setzen, kannst du den folgenden VBA-Code verwenden. Dieser Code erstellt ein neues Arbeitsblatt basierend auf einem Template und fügt einen Hyperlink zur Übersicht hinzu.

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“, dann „Einfügen“ > „Modul“).
  3. Kopiere den folgenden Code in das Modul:
Sub LinkMitVariableSetzen()
    Dim ID As String
    Dim Kopierzeile, IDSpalte As Integer
    Dim Zeile As Integer
    Dim LetzteZeile As Integer

    Application.ScreenUpdating = False
    Sheets("User Story Übersicht").Select
    Kopierzeile = Cells(1, 8).Value
    IDSpalte = Cells(2, 8).Value
    LetzteZeile = Cells(2, "L").Value

    ID = InputBox("Bitte ID angeben", "ID Abfrage", "US_")

    For Each Sheet In ActiveWorkbook.Worksheets
        If Sheet.Name = ID Then
            MsgBox "ID wird bereits verwendet. Bitte neue/einzigartige ID verwenden.", vbCritical
            ID = InputBox("Bitte neue ID angeben", "Erneute ID Abfrage", "US_")
        End If
    Next

    Zeile = InputBox("Bitte Zeile angeben vor welche eingefügt werden soll", "Zeile bestimmen", LetzteZeile)
    Sheets("US_Template").Copy Before:=Sheets("Templates >>")
    Sheets("US_Template (2)").Name = ID
    Cells(6, 6).Value = ID

    Sheets("User Story Übersicht").Select
    Rows(Kopierzeile).Copy
    Rows(Zeile).Insert Shift:=xlDown
    Rows(Zeile).Replace What:="US_Template", Replacement:=ID, LookAt:=xlPart

    Cells(Zeile, IDSpalte).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & ID & "'!A1"

    Sheets(ID).Select
    Application.ScreenUpdating = True
End Sub
  1. Führe das Makro aus, indem du im VBA-Editor F5 drückst oder im Excel-Fenster die Schaltfläche „Makros“ wählst.

Häufige Fehler und Lösungen

  • Fehler: Hyperlink wird nicht erstellt
    Lösung: Stelle sicher, dass die ID korrekt eingegeben wurde und das Arbeitsblatt existiert. Überprüfe auch, ob der Code im richtigen Arbeitsblatt ausgeführt wird.

  • Fehler: ID wird als bereits verwendet angezeigt
    Lösung: Es kann sein, dass ein Arbeitsblatt mit dem gleichen Namen bereits existiert. Wähle eine einzigartige ID, die noch nicht verwendet wird.


Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch die Funktion HYPERLINK in einer Zelle verwenden, um auf ein Arbeitsblatt zu verlinken:

=HYPERLINK("#'ID des Arbeitsblattes'!A1", "Linktext")

Ersetze „ID des Arbeitsblattes“ mit dem tatsächlichen Namen des Arbeitsblattes.


Praktische Beispiele

  1. Erstellen eines Links zu einem Arbeitsblatt: Angenommen, du hast ein Arbeitsblatt mit dem Namen „Projekt1“. Du könntest in einer Zelle folgendes eingeben:

    =HYPERLINK("#'Projekt1'!A1", "Zu Projekt1")
  2. VBA-Beispiel für dynamische Links: Das obige VBA-Skript kann verwendet werden, um mehrere Arbeitsblätter zu erstellen und sie automatisch in einer Übersicht zu verlinken.


Tipps für Profis

  • Verwende die Application.ScreenUpdating-Eigenschaft: Dadurch wird die Bildschirmaktualisierung während des Makroablaufs deaktiviert, was die Ausführungsgeschwindigkeit erhöht und das Flackern des Bildschirms verhindert.

  • Teste den Code schrittweise: Wenn du Fehler findest, setze Haltepunkte im Code, um den Ablauf zu überprüfen und Probleme zu identifizieren.


FAQ: Häufige Fragen

1. Kann ich mehrere Hyperlinks in einer Zeile erstellen?
Ja, du kannst mehrere Hyperlinks in verschiedenen Zellen erstellen, indem du denselben Code anpasst, um unterschiedliche IDs zu verwenden.

2. Gibt es eine Methode, um Hyperlinks für eine große Anzahl von Arbeitsblättern automatisch zu generieren?
Ja, du kannst eine Schleife im VBA-Code verwenden, um automatisch Hyperlinks für alle Arbeitsblätter in der Arbeitsmappe zu erstellen, basierend auf einer Liste von IDs.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige