Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
868to872
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
868to872
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Blattname automatisch als link

Blattname automatisch als link
16.05.2007 09:21:00
Mark
Hallo zusammen!
Ich hab mal wieder ein für mich sehr anspruchvolles Problem:
Mit folgendem Makro erzeuge ich mir eine Kopie meines Tabellenblattes 2 und füge diese automatisch hinten in der Mappe ein. Tabellenblatt 1 ist die Übersicht über den gesamten Inhalt der Mappe, die sich automatisch generiert:

Sub BlattdatenAktualisieren(BlattName As String, Zeile1 As Integer)
'Daten aus den anderen Tabellenblättern werden als Liste im Blatt eingetragen
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Dim Zeile As Long, Spalte As Integer
Set wksZiel = ThisWorkbook.Worksheets(BlattName)
Application.ScreenUpdating = False
With wksZiel
'Alte Daten in der Liste löschen
If .Cells.SpecialCells(xlCellTypeLastCell).Row >= Zeile1 Then
.Range(.Cells(Zeile1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).ClearContents
End If
'Tabellenblätter auslesen
Zeile = Zeile1
For Each wksQuelle In ThisWorkbook.Worksheets
If wksQuelle.Name  wksZiel.Name Then
'Werte aus den  Zellen übertragen
.Cells(Zeile, 1).Value = wksQuelle.Range("E4").Value 'Name des Tabellenblattes
.Cells(Zeile, 2).Value = wksQuelle.Range("E5").Value 'Info 1
.Cells(Zeile, 3).Value = wksQuelle.Range("E6").Value 'Info 2
.Cells(Zeile, 4).Value = wksQuelle.Range("I33").Value 'Info 3
.Cells(Zeile, 7).Value = wksQuelle.Range("M11").Value 'Info 4
.Cells(Zeile, 8).Value = wksQuelle.Range("Q20").Value 'Info 5
Zeile = Zeile + 1
End If
Next wksQuelle
'Datensortieren nach Spalte 1 und 2
.Range(.Cells(Zeile1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Sort _
Key1:=.Cells(Zeile1, 1), Order1:=xlAscending, Key2:=.Cells(Zeile1, 2), _
Order2:=xlAscending, Header:=xlNo
End With
Application.ScreenUpdating = True
End Sub


In Zeile 1 wird nun automatisch der Wert aus der Zelle E4 des neu angelegten Blattes eingetragen, das ist automatisch der neue Tabellenblattname (ein Makro regelt das in dem neu angelegten Blatt).
Nun mein Problem:
Ich wünsche mir ganz doll, dass der Wert, der aus Zelle E4 ausgelesen wird immer automatisch ein Link zu dem neu angelegten Blatt ist. Die Schwierigkeit liegt hier wohl darin, dass die Übersichtsliste (Tabellenblatt1) nicht statisch ist und sich immer wieder, mit jedem neu angelegten Tabellenblatt, verändert.
Hat da jemand eine Idee?
Im Voraus bereits vielen Dank an alle die sich diesen Riesentext durchgelesen haben und dann auch eventuell auch noch eine Lösung bereit haben!
MfG
Mark

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattname automatisch als link
16.05.2007 09:56:00
Christian
Servus,
man kann über z.B. folgendes Makro einen Hyperlink setzten:
("Zelle").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Tabelle1!A1"
Hier in diesem Fall: nach Tabelle1!A1, evtl. muß man hier eintragen "wksQuelle.Name.Range("A1")" und für zelle:Range (.Cells(zeile, 1)).Select
und das dann in den Übertragungsblock einsetzen. Versuch ist es wert, bin aber nicht sicher, ob das funktioniert, hab das noch nie ausprobiert, ist aber vielleicht ein Ansatz.
Gruß
Christian

AW: Blattname automatisch als link
16.05.2007 13:09:00
Mark
Upps Christian, hab da aus Versehen zu einem falschen Thema geantwortet und nicht auf Deinen Beitrag. Vielen Dank schon einmal für Deine Mühe. Ich probiers gleich mal aus und sag Dir bescheid!

Anzeige
AW: Blattname automatisch als link
16.05.2007 13:11:50
Mark
Hab es eben ausprobiert, funktioniert leider nicht :-(
Trotzdem danke!

AW: Blattname automatisch als link
16.05.2007 13:06:44
Mark
Ich kann die Excel Datei leider nicht hochladen, da sie nur sensible Daten enthält (ist leider beruflich).
Ich habe gedacht, man könnte so einen Hyperlink - Befehl irgendwie in das makro einbinden, oder ein zusätzliches Modul erstellen, dass dies leistet.

AW: Blattname automatisch als link
16.05.2007 15:18:00
mpb
Hallo Mark,
füge mal nach der Zeile
.Cells(Zeile, 1).Value = wksQuelle.Range("E4").Value 'Name des Tabellenblattes
folgendes ein:
.Hyperlinks.Add Anchor:=.Cells(Zeile, 1), Address:="", SubAddress:=.Cells(Zeile, 1) & "!A1"
Gruß
Martin

Anzeige
AW: Blattname automatisch als link
16.05.2007 16:18:00
Mark
Das funktioniert echt super, danke!
Da hab ich nur noch eine kleine Frage (ist hoffentlich nicht unverschämt) gibt es noche eine Möglichkeit den Ausdruck A1! zu unterdrücken, weil im Tabellenblatt1 (Übersicht) steht nun automatisch immer der Ausdruck A1! (Beim Klick darauf meldet er "Bezug ungültig").
Wenn es da keine Möglichkeit gibt kein Problem, bis hierhin schon einmal vielen Dank!

AW: Blattname automatisch als link
16.05.2007 17:10:52
mpb
Hallo Mark,
bei mir hat es korrekt funktioniert. Poste doch noch einmal Deinen kompletten Code oder lade die Datei hier hoch.
Gruß
Martin
P.S. Hast Du den Punkt vor Cells berücksichtigt?

Anzeige
AW: Blattname automatisch als link
20.05.2007 08:23:00
Mark
Hallo mpb,
entschuldigung, dass ich mich jetzt erst melde, hatte übers Wochenende keinen PC in Griffnähe.
Wie gesagt, Dein Code funktioniert echt prima, nur er legt eben automatisch immer noch eine Zeile mit dem Eintrag A1! an, mein Code sieht jetzt folgendermaßen aus:

Sub BlattdatenAktualisieren(BlattName As String, Zeile1 As Integer)
'Daten aus den anderen Tabellenblättern werden als Liste im Blatt eingetragen
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Dim Zeile As Long, Spalte As Integer
Set wksZiel = ThisWorkbook.Worksheets(BlattName)
Application.ScreenUpdating = False
With wksZiel
'Alte Daten in der Liste löschen
If .Cells.SpecialCells(xlCellTypeLastCell).Row >= Zeile1 Then
.Range(.Cells(Zeile1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).ClearContents
End If
'Tabellenblätter auslesen
Zeile = Zeile1
For Each wksQuelle In ThisWorkbook.Worksheets
If wksQuelle.Name  wksZiel.Name Then
'Werte aus den  Zellen übertragen
.Cells(Zeile, 1).Value = wksQuelle.Range("E4").Value 'Name des Tabellenblattes
.Hyperlinks.Add Anchor:=.Cells(Zeile, 1), Address:="", SubAddress:=.Cells(Zeile, 1) & "! _
A1"
.Cells(Zeile, 2).Value = wksQuelle.Range("E5").Value 'Info 1
.Cells(Zeile, 3).Value = wksQuelle.Range("E6").Value 'Info 2
.Cells(Zeile, 4).Value = wksQuelle.Range("I33").Value 'Info 3
.Cells(Zeile, 7).Value = wksQuelle.Range("M11").Value 'Info 4
.Cells(Zeile, 8).Value = wksQuelle.Range("Q20").Value 'Info 5
Zeile = Zeile + 1
End If
Next wksQuelle
'Datensortieren nach Spalte 1 und 2
.Range(.Cells(Zeile1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Sort _
Key1:=.Cells(Zeile1, 1), Order1:=xlAscending, Key2:=.Cells(Zeile1, 2), _
Order2:=xlAscending, Header:=xlNo
End With
Application.ScreenUpdating = True
End Sub


Ich weiß nicht, ob ich da noch was falsch gemacht habe, ich hab alles nochmal nach bestem Wissen überprüft. Ist zwar schon ne Weile her, aber vielleicht hast Du ja doch noch Lust mal schnell drüber zu schauen.
Schönen Sonntag noch!
Gruß Mark

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige