Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Tabellenblatt kopieren/nummerieren

Betrifft: Tabellenblatt kopieren/nummerieren von: David
Geschrieben am: 30.10.2020 14:18:07

Hallo zusammen,

ich Arbeite aktuell an meiner ersten UserForm in Excel.
Hier habe ich aktuell ein Spinwheel welches in einer TextBox die Nummernwerte 0 - Unendlich ausgibt.

Anhand dieser Nummer würde ich gerne folgendes umsetzen:
Wert - 0 = Tabellenblatt "Projekt_1" Ausblenden
Wert - 1 = Tabellenblatt "Projekt_1" bleibt eingeblendet
Wert - 2 = Tabellenblatt "Projekt_1" Kopieren und dahinter setzen mit dem Namen "Projekt_2"
Wert - 3 = Tabellenblatt "Projekt_1" zwei mal Kopieren und dahinter setzen mit den Namen "Projekt_2" und "Projekt_3".
etc....

Dies soll passieren wenn ich den CommandButton Klicke.
Einfaches Kopieren bekomme ich schon hin aber leider nicht mit der Fortlaufen Nummerierung anhand und Menge anhand des Zahlenwertes aus der TextBox.

Sieht also aktuell so bei mir aus:

Private Sub Button_Anlegen_Click()
    'Kopieren und erstellen der Tabellenblätter
    Worksheets("Projekt_1").Copy after:=Worksheets("Projekt_2")
    ActiveSheet.Name = "Kassenautomat " & Worksheets.Count - 2
End Sub
Hoffe dies ist nicht zu kompliziert und ich bekomme es auch umgesetzt, das wäre Super!
Danke schonmal!


Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: ChrisL
Geschrieben am: 30.10.2020 15:51:20

Hi

Vielleicht so...
Private Sub CommandButton1_Click()
Dim i As Long

Select Case TextBox1.Value
    Case 0
        Worksheets("Projekt_1").Visible = False
    Case 1
        Worksheets("Projekt_1").Visible = True
    Case Is > 1
        Application.ScreenUpdating = False
        For i = 1 To TextBox1.Value - 1
            Call BlattErstellen
        Next i
    Case Else
        MsgBox "kein gültiger Wert"
End Select
End Sub

Private Sub BlattErstellen()
    'Kopieren und erstellen der Tabellenblätter
    Worksheets("Projekt_1").Copy after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Kassenautomat " & Worksheets.Count - 2
End Sub
cu
Chris

Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: David
Geschrieben am: 01.11.2020 11:13:08

Hallo ChrisL,

ich konnte es leider erst jetzt probieren.
Das mit dem Case funktioniert einwandfrei!

Nur habe ich noch ein Problem mit dem Kopieren,
er fängt immer an bei Projekt 10 dann Projekt 11 es sollte ja dann Projekt 2 und Projekt 3 sein.
könnte es sein das er die TabellenBlätter Zählt mit Worksheet.Count? Das würde schon hinkommen.
Wie sollte es gemacht werden das er Fortlaufen mit Projekt 2 und dan Projekt 3 kopiert?

Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: ChrisL
Geschrieben am: 02.11.2020 09:41:25

Hi David

Korrigiere mal -2 in -10.

cu
Chris

Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: David
Geschrieben am: 03.11.2020 12:01:18

HI ChrisL,

das habe ich bereits gemacht ud das funktioniert auch.
Nur Leider ist die Reihenfolge durcheinander.
Ich habe jetzt zb.: Projekt_1 dann Projekt_3 dann Projekt_2
Kann man das noch sortieren?

Wie würde es sich den verhalten wenn ich diese Funktion mehrfach habe also noch eine weitere TextBox wo anhand der Zahl weitere Tabellenblätter erstellt werden sollen? bezieht es sich dann nur auf die von anfang an vorhandenen Tabellenblätter?

Danke schonmal!

Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: ChrisL
Geschrieben am: 03.11.2020 16:40:27

Hi

Die neu erzeugte Tabelle wird immer hinter die letzte vorhandene Tabelle gestellt. Dein Problem kann ich ohne Beispieldatei nicht nachvollziehen.

Wenn du noch andere Projektbezeichnungen mit variabler Anzahl Blätter hast, dann müsste man die Blätter einzeln durchzählen und man kann sich nicht mehr allgemein am Blattzahl-Total (Worksheets.Count) orientieren.

Muster:
Sub t()
Dim ws As Worksheet, x As Integer

For Each ws In ThisWorkbook.Worksheets
    If ws.Name Like "Projekt_*" Then x = x + 1
Next ws

MsgBox "Es gibt " & x & " Projektblätter"
End Sub

cu
Chris

Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: David
Geschrieben am: 04.11.2020 09:01:46

Hallo ChrisL,
das Tabellenblatt steht nicht am Ende danach kommen noch andere.

Ich denke das Problem ist das ich sage Kopiert es hinter "Kassenautomat_1".
Ich müsste im sagen kopiere das nächste "Kassenautomat_X" - Blatt hinter Kassenautomat_*?

Gibt es da eine möglichkeit?

Hier mein Code:


Private Sub BlattErstellen()
    'Kopieren und erstellen der Tabellenblätter
    Dim tbstr As String
    
        tbstr = "Kassenautomat_" & ActiveWorkbook.Sheets.Count - 9
        Worksheets("Kassenautomat_1").Copy after:=ActiveWorkbook.Sheets("Kassenautomat_1")
        ActiveSheet.Name = tbstr
End Sub


Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: ChrisL
Geschrieben am: 04.11.2020 09:32:06

Hi
Sub t()
Dim ws As Worksheet, x As Integer

For Each ws In ThisWorkbook.Worksheets
    If ws.Name Like "Kassenautomat_*" Then x = x + 1
Next ws

Worksheets("Kassenautomat_1").Copy after:=ActiveWorkbook.Sheets("Kassenautomat_" & x)
ActiveSheet.Name = "Kassenautomat_" & x + 1
End Sub
Besser wäre es, dies ohne Schleife zu lösen, aber hierzu fehlen die Details. Welche Blätter sind fix, welche variabel, Positionen der Blätter usw.

cu
Chris

Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: David
Geschrieben am: 04.11.2020 11:39:58

Hi ChrisL,

leider bekomme ich da einen Fehler.
Ich habe die Datei jetzt hochgeladen. Geplant ist das Kassenautomat_1 / Einfahrtskontrollgerät_1 / Ausfahrtskontrollgerät_1 Variable sein sollen , also je nach anzahl in der Userform kopiert und Automatisch nummeriert werden sollen. Dies soll später noch durch 2-4 weitere Variable Blätter ( Schranken ) erweitert werden.
Der Rest ist Fix und nicht variable, soll 2 Blätter sollen aber je nach Userform eintrag Ausgeblendet werden, dies noch zur Info!

Hier die Datei:
https://www.herber.de/bbs/user/141304.xlsm

Danke schonmal!

Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: ChrisL
Geschrieben am: 04.11.2020 12:54:32

Hi David
Private Sub Button_Anlegen_Click()
Call BlattErstellen(TextBox_KA_KP, "Kassenautomat_")
Call BlattErstellen(TextBox_EKG_KP, "Einfahrtskontrollgerät_")
' usw.
End Sub

Private Sub BlattErstellen(strTB As String, strBez As String)
Dim i As Integer, intTB As Integer
Dim ws As Worksheet, x As Integer

If Not IsNumeric(strTB) Then Exit Sub
intTB = strTB
If intTB = 0 Or intTB = 1 Then
    Worksheets(strBez & 1).Visible = intTB
Else
    For i = 1 To intTB - 1
        x = 0
        For Each ws In ThisWorkbook.Worksheets
            If ws.Name Like strBez & "*" And _
            ws.Name <> "Kassenautomat_ZE" Then x = x + 1
        Next ws
        Worksheets(strBez & 1).Copy after:=ActiveWorkbook.Sheets(strBez & x)
        ActiveSheet.Name = strBez & x + 1
    Next i
End If
End Sub

cu
Chris

Betrifft: AW: Tabellenblatt kopieren/nummerieren
von: David
Geschrieben am: 04.11.2020 14:37:52

Hallo ChrisL,

das klappt wunderbar!
Vielen Dank dir! Problem gelöst!

Beiträge aus dem Excel-Forum zum Thema "Tabellenblatt kopieren/nummerieren"