Frage von Dianisi, 104

Suche ein Makro welches mir alle Blattnamen (außer "Blatt1") in eine Tabelle in Blatt1 einträgt, kann mir jemand weiterhelfen?

Hätte gerne auf meinem "Blatt1" eine Auflistung aller Blätternamen der Exceldatei. Die Namen sollen untereinander ab Zelle D3 von "Blatt1" stehen. Zusätzlich soll in der nächsten Spalte E jeweils ein Zellenwert (Datum) von den Blättern stehen. Der Datumswert der Blätter steht in Zelle E9. Sprich am Ende soll mir das Makro eine Tabelle liefern in der Form:

Tabellenname Datum

Blatt 2 04.05.12

Blatt 3 02.02.10

... ....

Bin leider noch ein Anfänger bei VBA und hab dieses noch nicht Umsetzen können. Für mögliche Anregungen und Lösungen wäre ich sehr dankbar! Die Blätteranzahl variiert weshalb ein Makro von Nöten ist.

Expertenantwort
von Iamiam, Community-Experte für Excel, 99
  1. Mit Alt+F11 VBA öffnen
  2. Menü Einfügen: (neues) Modul
  3. ggf im Fenster Eigenschaften benamsen (nicht zwingend notwendig)
  4. dieses Sub dort einfügen (unterhalb evtl vorhandener Einträge wie Option Explicit oder Option Base 1 (oder 0)):

Sub BlattNamenUntereinanderListen()
Dim Blatt
For Each Blatt In Worksheets()
ActiveCell.Value = Blatt.Name
ActiveCell.Offset(1, 0).Activate 'untereinander
Next
End Sub

Dieses Makro ist sehr kurz, läuft allerdings trotzdem bemerkenswert langsam

Da Du es in verschiedenen Spalten listen willst, heißt das µ natürlich BlattNamenNebeneinanderListen() und anstatt Offset(1, 0) muss es heissen .Offset(0, 1) - das ist alles!

Aber Achtung: das Makro überschreibt gnadenlos alle am Zielort bestehenden Einträge!

Kommentar von Iamiam ,

am besten, Du probierst es erst mal in einem leeren Blatt aus!

Blatt 1 kannst Du ja wieder löschen!

Kommentar von Iamiam ,

Hab mich verlesen,

also doch untereinander: D3 ff. Datumswert E9: (aber anscheinend nicht in Blatt1)

Formel in E3:

=D3&Text(indirekt(D3&"!E9");" TT.MM.JJ")

und runterziehen (E3 liefert natürlich einen Fehler, wenn/weil in Blatt1 kein Datum steht, vllt auch Blatt1! 00.00.00) Das Absolutzeichen für E$9 kann entfallen, da "!E9" ein Text ist, der beim Kopieren nicht verändert wird. Das Leerzeichen zwischen Blattname und Datum ist ein umgesetztewr Formatbefehl, den Du aber in der Formel ändern kannst. Oder als &" "& zwischen die beiden Teilglieder D3 und Text... schieben.

oben: natürlich nicht Dein Blatt1  löschen, sondern das zum Ausprobieren!

Halt (zu spät) erstes Glied löschen, brauchst du ja gar nich

Expertenantwort
von DeeDee07, Community-Experte für Excel, 76

Du kannst die Auflistung der Tabellenblätter mit der vorgefertigten Excel4-Makrofunktion ARBEITSMAPPE.ZUORDNEN (Google-Stichwort!) tun. Eine genaue Vorgehensweise findest du bei Google.

Die Ausgabe des zugehörigen Datümer kannst du dann mit der INDIREKT-Funktion hinbekommen.

Antwort
von maximilianus7, 73

1. anregung:

Sub test()
Set tab1 = ActiveWorkbook.Sheets(1)
first = True

For ix = 2 To ActiveWorkbook.Sheets.Count
tab1.Cells(ix + 1, "D").Value = ActiveWorkbook.Sheets(ix).Name
Next ix
End Sub

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten