Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
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

Letzter Blattname mit Textteil hochzählen

Letzter Blattname mit Textteil hochzählen
24.04.2019 12:24:49
MS
Hallo Zusammen,
ich habe mir folgende Aufgabe gestellt und komme nicht wirklich weiter. Ich kann VBA so gut bzw. schlecht, dass ich mir aus Makrorecorder und Foreneinträgen normal das passende zusammenbasteln kann. Jetzt komme ich leider nicht weiter, da ich bei z.B. Rechenoperationen in Macros nicht wirklich durchblicke.
Folgendes Problem:
Ich muss oft Arbeitsblätter ans Ende kopieren und dann umbenennen. Die Struktur der Arbeitsblätte schaut wie folgt aus (Anzahl variabel, Reihenfolge fix):
BlattX; BlattY; BalltN; AA1; AA2; AA3; [...], AA56; usw.
Ich möchte jetzt ein beliebiges Blatt aus deiser Arbeitsmappe hinter das letzte Blatt kopieren und die nächste freie Nummer - in diesem Fall AA57 - vergeben. Führe ich das Makro nochmal aus AA58 etc.
Das AA ist hierbei leider auch nicht in jeder Arbeitsmappe identisch,m es könnte auch BB sein, ist aber innerhalb der Arbeitsmappe konstisten.
So weit bin ich schon (hab eich teilweise auch hier aus dem Forum):
Sub Blatt_kopieren_und_ans_Ende_stellen()
Dim NeuerTabellenName As String
Application.ScreenUpdating = False
'Neuen TabellenName ist letzter Blattname, auslesen und merken
NeuerTabellenName = Worksheets(Worksheets().Count).Name
'Tabelle kopieren und hinter der letzten Tabelle einfügen
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'der neuen Tabelle den Name geben
Sheets(Sheets.Count).Name = NeuerTabellenName
Application.ScreenUpdating = True
End Sub
Also bräuchte ich in Makroform im einfachsten Fall etwas wie:
=Teil("Blattname";1;2)&Teil("Blattname";3;6)*1+1
Das würde aus AA1, AA2 oder aus XY1256, XY1257 machen.
Eleganter wäre noch wenn das Makro den Textteil und den Zahlenteil (immer nach letzem Textteil) selbst unterscheiden könnte also aus Text123, Text124 machen würde oder noch besser aus 15Text123 auch 15Text124 - aber das ist Optional.
Ich hoffe Ihr könnt mir weiter helfen.
Danke

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzter Blattname mit Textteil hochzählen
24.04.2019 14:13:40
Oberschlumpf
Hi
probier mal:

Sub Blatt_kopieren_und_ans_Ende_stellen()
Dim NeuerTabellenName As String, liLen As Integer, liNummer As Integer
Application.ScreenUpdating = False
'Neuen TabellenName ist letzter Blattname, auslesen und merken
NeuerTabellenName = Worksheets(Worksheets().Count).Name
'Tabelle kopieren und hinter der letzten Tabelle einfügen
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'Nummer von letztem Blattnamen um 1 erhöhen
For liLen = Len(NeuerTabellenName) To 1 Step -1
If Not IsNumeric(Mid(NeuerTabellenName, liLen, 1)) Then
liNummer = CInt(Right(NeuerTabellenName, Len(NeuerTabellenName) - liLen)) + 1
NeuerTabellenName = Left(NeuerTabellenName, Len(NeuerTabellenName) - (Len( _
liNummer) - 1)) & liNummer
Exit For
End If
Next
'der neuen Tabelle den Name geben
Sheets(Sheets.Count).Name = NeuerTabellenName
Application.ScreenUpdating = True
End Sub

Hilfts?
Ciao
Thorsten
Anzeige
AW: Letzter Blattname mit Textteil hochzählen
24.04.2019 14:23:37
MS
Danke - Fast :)
Wenn das letzte Blatt "MN77" heißt macht das Macro "MN778" daraus.
Wenn das letzte Blatt "MN79" heißt macht das Macro "MN780" daraus.
Scheint irgendwo noch eine Verschiebung bei den Stellen drin zu sein.
AW: Letzter Blattname mit Textteil hochzählen
24.04.2019 14:20:34
Matthias
Moin!
Dann probiere es mal so.
Dim NeuerTabellenName As String
Dim steller As Long
Application.ScreenUpdating = False
'Neuen TabellenName ist letzter Blattname, auslesen und merken
NeuerTabellenName = Worksheets(Worksheets().Count).Name
For stelle = Len(NeuerTabellenName) To 1 Step -1
If Not IsNumeric(Mid(NeuerTabellenName, stelle, 1)) Then Exit For
Next
If Len(NeuerTabellenName) = stelle Then
NeuerTabellenName = Left(NeuerTabellenName, stelle) & 1
Else
NeuerTabellenName = Left(NeuerTabellenName, stelle) & Right(NeuerTabellenName, Len( _
NeuerTabellenName) - stelle) + 1
End If
'Tabelle kopieren und hinter der letzten Tabelle einfügen
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'der neuen Tabelle den Name geben
Sheets(Sheets.Count).Name = NeuerTabellenName
Application.ScreenUpdating = True

Damit wird vom Ende des Namens so lange zurückgegangen, bis ein Buchstabe kommt. Dann wird dort der Text getrennt und neu zusammengebastelt. Das Ganze geht auch, wenn nur eine Zahl da steht oder nur BUchstaben sind (dann wird eine 1 angehängt).
VG
Anzeige
AW: Letzter Blattname mit Textteil hochzählen
24.04.2019 14:27:30
MS
Perfekt, so funktioniert es in jedem beschriebenen Fall, Danke vielmals!
Jetzt werde ich mich noch dransetzen und versuchen zu verstehen wie es genau funktioniert damit ich auch was lerne :)

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige