Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrere Hyperlinks automatisch mit Makro machen

Mehrere Hyperlinks automatisch mit Makro machen
13.08.2014 15:47:01
TOMMY123
Hallo zusammen,
ich habe eine Arbeitsmappe mit mehreren Tabellenblättern.
Im letzten Tabellenblatt sind zwei Spalten (Spalte A und Spalte B)
In Spalte A sind die Titel einiger Tabellenblätter(diese können variieren) und in Spalte B der Name der Zellen, zur der ein Hyperlink auf das jeweilige Arbeitsblatt gehen soll.
Dies kann z.B. folgendermaßen ausschauen:
Spalte A Spalte B
Titel(Tabellenblatt1) A14
Titel(Tabellenblatt2) A3
Titel(Tabellenblatt3) A5
.
.
.
usw.
Ich möchte nun einen Hyperlink nach Zelle A14 von Tabellenblatt 1 erzeugen, danach einen Hyperlink nach Zelle A3 von Tabellenblatt 2 usw.
Wie kann ich das automatisiert mit einem Makro realisieren?
Ich habe das ganze schon mit dem Makrorekorder aufgezeichnet. Dies hat funktioniert, jedoch ist es so nicht dynamisch.
Vielen Dank schon mal!
Gruß,
Thomas

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Hyperlinks automatisch mit Makro machen
13.08.2014 16:40:21
fcs
Hallo Thomas,
nachfolgend ein entsprechendes Makro, das du ggf. noch ein wenig anpassen musst.
Gruß
Franz
Sub HyperlinksEinfuegen()
' Hyperlinks einfuegen auf dem letzten Blatt
Dim wks As Worksheet, Zelle As Range
Dim Zeile As Long
Dim strZelle As String, strTab As String
On Error GoTo Fehler
Set wks = ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
With wks
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 2).Hyperlinks.Count > 0 Then
.Cells(Zeile, 2).Hyperlinks(1).Delete
End If
strZelle = .Cells(Zeile, 2).Text
strTab = .Cells(Zeile, 1).Text
If strTab  "" And strZelle  "" Then
Set Zelle = Worksheets(strTab).Range(strZelle)
.Hyperlinks.Add Anchor:=.Cells(Zeile, 2), Address:="", _
SubAddress:="'" & strTab & "'!" & strZelle, _
TextToDisplay:=strZelle
End If
NextZeile:
Next
End With
Fehler:
With Err
Select Case .Number
Case 0
Case 1004
'Tabellenname oder Zelladresse ist nicht gültig
Resume NextZeile
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: Mehrere Hyperlinks automatisch mit Makro machen
14.08.2014 09:26:59
TOMMY123
Vielen Dank, Franz!
Ich habe es noch ein wenig modifiziert, aber es ist genau das, was ich wollte! :)
Ich habe noch ein weiteres Problem:
Gibt es eine Möglichkeit, die einzelnen Tabellenblätter, die sich ja in Spalte A befinden, in einer Userform in ein List- oder Kombobox anzeigen zu lassen, um diese dann dort auszuwählen?
Am besten mit Bezug auf die jeweilige Zelle, die in Spalte B steht.
Noch zur Info: Die Auswahl der Tabellenblätter in Spalte A erfolgt folgendermaßen. Ich habe einen Wert und prüfe, in welchen Tabellenblättern (inkl. Zelle) dieser vorkommt.
Bin für jeden Tipp dankbar!
Gruß,
Thomas

Anzeige
AW: Mehrere Hyperlinks automatisch mit Makro machen
14.08.2014 11:04:04
fcs
Hallo Thomas,
Gibt es eine Möglichkeit, die einzelnen Tabellenblätter, die sich ja in Spalte A befinden, in einer Userform in ein List- oder Kombobox anzeigen zu lassen, um diese dann dort auszuwählen?
Am besten mit Bezug auf die jeweilige Zelle, die in Spalte B steht.

Ja, man muss dann die List- oder Kombobox mit 2 Spalten definieren und die Datenquelle (RowSource entsprechend setzen. Alternativ könnte man auch, ähnlich wie du die Zeilen in der Übersichtsliste füllst, mit der AddItem-Methode die Auswahlliste für die Listbox füllen.
Nachfolgend entsprechender Userform-Code für eine Listbox - für eine Combobox sieht es ähnlich aus.
Gruß
Franz
'Userform-Code
Private Sub ListBox1_Change()
With Me.ListBox1
If .ListIndex  -1 Then
Sheets(.List(.ListIndex, 0)).Activate
Range(.List(.ListIndex, 1)).Select
End If
End With
End Sub
Private Sub UserForm_Initialize()
Dim wks As Worksheet, Zeile As Long
Set wks = ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count) 'Tabellenblatt mit Liste
'Listbox formatieren - kann man auch alles unter den Eigenschaften einstellen
With Me.ListBox1
.ColumnCount = 2
.ColumnWidths = "150Pt;30Pt"
.Width = 200
End With
'RowSource für Listbox festlegen
With wks
Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row
Me.ListBox1.RowSource = "'" & .Name & "'!" _
& .Range(.Cells(2, 1), .Cells(Zeile, 2)).Address(ReferenceStyle:=xlA1)
End With
End Sub

Anzeige
AW: Mehrere Hyperlinks automatisch mit Makro machen
14.08.2014 13:32:37
TOMMY123
Danke, du hast schon wieder voll ins Schwarze getroffen :)
Ich habe die Listbox in der Userform jetzt noch auf Multiselect umgestellt. Natürlich kann ich jetzt mehrere Einträge in der Listbox auf einmal auswählen.
Jedoch reagiert die Userform dann nur auf das Arbeitsblatt, welches als erstes in der Liste steht. Gibt es eine Möglichkeit, dass mehrere der in der listbox ausgewählten Arbeitsblätter parallel im Hintergrund aktiv sind und nicht nur das, welches ich gerade sehe?
Danke!
Viele Grüße,
Thomas

AW: Mehrere Hyperlinks automatisch mit Makro machen
14.08.2014 14:53:31
fcs
Hallo Thomas,
du kannst mehrere Blätter, die in der Listbox selektiert sind, gruppieren, wenn du das meinst. Aktiv ist aber immer nur ein Blatt (das mit der fetten Schrift im Tabellenreiter)
Gruß
Franz
Private Sub ListBox1_Change()
'Liste der gewählten Einträge in Array übernehmen bei Listbox mit Mehrfach-Auswahl
Dim arrSheets(), intSh As Integer, intCount As Integer
Erase arrSheets
intSh = 0
With Me.ListBox1
For intCount = 0 To .ListCount - 1
If .Selected(intCount) = True Then
intSh = intSh + 1
ReDim Preserve arrSheets(1 To intSh)
arrSheets(intSh) = .List(intCount)
End If
Next
If intSh > 0 Then
Sheets(arrSheets).Select
End If
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige