AW: Hyperlink mit variablem Anzeigenamen?
27.09.2024 21:19:31
HJS
Zuersteinmal vielen Dank Raimund für deine Mühe! Auch für die Tatsache das du es in VBA umgesetzt hast!
Leider bekomme ich das nicht zum laufen.
Ich frage mal unverschämt. Kannst du deine Idee vielleicht in den vorhanden VBA Code "einbauen" den ich verwende? Ich bekomme es nicht hin.
Klasse wäre wenn zum aktuellen Ausgabe-Tabellenblatt die Spalte Verknüfung hinzugefügt werden würde und hier der Hyperlink eigetragen wird.
Der VBA Code den ich exakt verwende (eine minimale Variation von GraFri's Original Code) lautet folgendermaßen:
Sub Suchen_und_anzeigen()
Dim Meldung As Byte, Pos As Byte
Dim Schleife As Byte, y As Byte
Dim Begriff, Suchen() As Variant
Dim Bereich As Range
Dim n%, x%, xZelle%, yZelle%
Dim xTabelle$(), Adresse$(), Text$
' Suchbegriff eingeben
Begriff = InputBox _
("Bitte den zu suchenden Film eingeben." & vbCrLf & "Sollen 2 Werte gleichzeitig gesucht werden," & vbCrLf & "dann mit Zeichen '+' voneinander trennen.", "Suchen und ausgeben")
If Begriff = "" Then Exit Sub
Pos = InStr(Begriff, "+")
If Pos Then
ReDim Suchen(2)
Suchen(1) = Left(Begriff, Pos - 1)
Suchen(2) = Right(Begriff, Len(Begriff) - Pos)
Schleife = 2
Else
ReDim Suchen(1)
Suchen(1) = Begriff
Schleife = 1
End If
Application.ScreenUpdating = False
' Eigentlicher Suchvorgang (in allen Tabellenblättern)
x = 1
For y = 1 To Schleife
For n = 1 To Sheets.Count
' Letzte Zelle des Bereiches ermitteln. Diese Zelle wird als Startzelle für
' die Suche definiert, da Suche nach dieser Zelle, also in erster Zelle
' des Bereiches beginnt.
'Bereich festlegen
Set Bereich = Worksheets(n).UsedRange
With Worksheets(n).Range(Bereich.Address)
xZelle = .Columns(.Columns.Count).Column
yZelle = .Rows(.Rows.Count).Row
End With
With Sheets(n).Range(Bereich.Address)
Set c = .Find(Suchen(y), after:=Cells(yZelle, xZelle), LookIn:=xlValues)
If Not c Is Nothing Then
ErsteAdresse = c.Address
Do
ReDim Preserve Adresse(x): ReDim Preserve xTabelle(x)
xTabelle(x) = Sheets(n).Name
Adresse(x) = c.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Set c = .FindNext(c)
x = x + 1
Loop While Not c Is Nothing And c.Address > ErsteAdresse
End If
End With
Next n
Next y
Application.ScreenUpdating = True
' Die Anzahl der gefundenen Werte ist (x - 1), wenn keiner
' gefunden wurde dann ist x = 1
Select Case x
Case 1
Meldung = MsgBox("Es wurde kein übereinstimmender Wert gefunden", _
vbOKOnly, "Gefundene Werte")
Exit Sub
Case Else
Meldung = MsgBox("Es wurden " & (x - 1) & " Übereinstimmungen gefunden.", _
vbOKOnly, "Gefundene Werte")
'Tabelle einfügen
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
On Error Resume Next
With ActiveSheet
.Name = Begriff
.[A1] = "Festplatte"
.[A1].HorizontalAlignment = xlCenter
.[B1] = "Zelle"
.[B1].HorizontalAlignment = xlCenter
For n = 1 To x - 1
.Cells(n + 1, 1) = xTabelle(n)
.Cells(n + 1, 1).HorizontalAlignment = xlCenter
.Cells(n + 1, 2) = Adresse(n)
.Cells(n + 1, 2).HorizontalAlignment = xlCenter
Next n
End With
End Select
End Sub
Wenn zu schwierig bin ich auch über einen manuellen Ansatz zu meiner ursprünglichen Fragestellung dankbar