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

Tabellenblatt einfügen und speichern

Tabellenblatt einfügen und speichern
16.01.2023 10:15:12
Romy
Hallo
Ich bräuchte Hilfe. Ich würde gerne diesen Code benutzen für das speichern eines Tabelleblattes. Gerne würde ich für das neue Tabellenblatt den Namen welcher im Feld B1 steht benutzen. Aktuell steht dort Kunde. Kann mir da wer helfen?

Sub PotenzialNeu()
'Vorlagenblatt kopieren, einfügen und umbenennen mit fortlaufender Nr.
Dim wbAktiv As Workbook
Dim wks As Worksheet
Dim intNrName As Integer
Dim strKopieNeu As String
Const strKopie As String = "Kunde " 'Startext für Name Blatt-Kopie
Const strVorlage As String = "blank" 'Name des Vorlageblattes
Const varEinfuegeBlatt As Variant = "Datenquelle" 'Name oder Nummer des Blatts vor _
dem eingefügt werden soll
Const strFormat As String = "0" 'Format für Zählziffer bei Namen
On Error GoTo Fehler
Set wbAktiv = ActiveWorkbook
'Nummer des Neuen Namens ermitteln
'Es wird die höchste Zählnummer der Namen ermittelt, die mit dem Kopie-Namen beginnnen
For Each wks In wbAktiv.Worksheets
With Application.WorksheetFunction
If LCase(Left(wks.Name, Len(strKopie))) = LCase(strKopie) Then
If IsNumeric(Mid(wks.Name, Len(strKopie) + 1)) Then
intNrName = .Max(intNrName, CLng(Mid(wks.Name, Len(strKopie) + 1)))
End If
End If
End With
Next
'Neuen Namen ermitteln
strKopieNeu = strKopie & Format(intNrName + 1, strFormat)
'Neues Blatt anlegen und Name zuweisen
wbAktiv.Worksheets(strVorlage).Copy before:=wbAktiv.Worksheets(varEinfuegeBlatt)
ActiveSheet.Name = strKopieNeu
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
End Sub

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 10:34:24
UweD
Hallo
vom oberen Teil kann dann aber einiges wegfallen.

'Neues Blatt anlegen und Name zuweisen
wbAktiv.Worksheets(strVorlage).Copy before:=wbAktiv.Worksheets(varEinfuegeBlatt)
With ActiveSheet
.Name = .Range("B1")
End With
Fehler:
LG UweD
AW: Tabellenblatt einfügen und speichern
16.01.2023 10:46:13
Romy
muss der obere Teil weg, oder kann man es in den Teil reinkopieren? Bin da nicht so erfahren, und der obere Teil hat gut funktioniert, bis halt eben nicht mit dem B1 als Name.
AW: Tabellenblatt einfügen und speichern
16.01.2023 11:00:10
Romy
wenn ich diesen Teil mit deinem Input anpasse, funktionierts eben gar nicht mehr. Würde mir sehr helfen, wenns in dem Makro eingebettet wird. Bin da noch etwas laienhaft unterwegs
Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 11:41:10
UweD
Hallo
das aktuelle Makro macht momentan:
- es ermittelt von allen Blattnamen, die mit Kunde anfangen und dahinter eine Zahl enthalten, die höchste Zahl
- Dann soll das Blatt "Blank" vor das Blatt "Datenquelle" kopiert werten
- und anschließend mit "Kunde xx" benannt werden, wobei xx dann "höchste Zahl plus 1" ist.
Neu
= Du willst nun das neue Blatt so benennen, wie der Wert in B1 ist.
- Dann kannst du doch das ganze Ermitteln der höchsten Zahl lassen
Aber :
- da du immer Blank kopierst , steht da immer das Gleiche.
- spätestens im 2. Durchlauf wäre der Blattname doppelt und es gibt einen Fehler.
Überlege dir erst nochmal genau, was du genau möchtest.
LG UweD
Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 11:48:10
Romy
Hallo Uwe
Ich hätte gerne, dass es meine Tabellenblatt-Vorlage (mit den dazugehörigen Makros) (Tabellenblatt Vorlage heisst: blank) als ein neues Tabelenblatt abspeichert, am besten links von der Tabellenblatt-Vorlage, mit Name/Wert in B1. Und gerne möchte ich das regelmässig nutzen, also mehr als zwei Durchläufe. Könntest Du mir hier mit dem Code helfen? Die Vorlage des aktuellen Codes habe ich hier im Forum gefunden und dachte ich kann die benutzen, aber wie du richtig erkannt hast macht es Dinge die ich gar nicht brauche.
AW: Tabellenblatt einfügen und speichern
16.01.2023 12:46:25
UweD
Hallo
dann reicht das hier aus.

Sub PotenzialNeu()
'Neues Blatt anlegen und Name zuweisen
ActiveWorkbook.Worksheets("blank").Copy before:=ActiveWorkbook.Worksheets("blank")
ActiveSheet.Name = ActiveWorkbook.Worksheets("blank").Range("B1")
MsgBox "Vor dem nächsten Start muss B1 auf 'Blank' geändert werden"
End Sub
LG UweD
Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 12:58:35
Romy
Hey Uwe
Danke, funktioniert einwandfrei.
Aktuell habe ich für dein Makro eine Schaltfläche eingebaut. Gibt es evt eine Möglichkeit, dass die Schaltfläche im neuen Tabellenblatt gelöscht wird?
AW: Tabellenblatt einfügen und speichern
16.01.2023 13:14:27
UweD
HAllo

Sub PotenzialNeu()
'Neues Blatt anlegen und Name zuweisen
Worksheets("blank").Copy before:=Worksheets("blank")
With ActiveSheet
.Name = .Range("B1")
.Shapes(1).Delete 'wenn es nur einen Button gibt
'.Shapes("Schaltfläche1").Delete 'sonst Name anpassen
End With
MsgBox "Vor dem nächsten Start muss B1 auf Blank umbenannt werden"
End Sub
LG UweD
Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 13:21:52
UweD
Update

Sub PotenzialNeu()
Dim NeuName As String
NeuName = Worksheets("blank").Range("B1")
'prüfen ob Blatt schon existiert/vorhanden
If IsError(Evaluate("'" & NeuName & "'!A1")) Then ' Hochkomma wegen möglicher Leerzeichen
'Neues Blatt anlegen und Name zuweisen
Worksheets("blank").Copy before:=Worksheets("blank")
With ActiveSheet
.Name = NeuName
.Shapes(1).Delete 'wenn es nur einen Button gibt
'.Shapes("Schaltfläche1").Delete 'sonst Name anpassen
End With
Else
MsgBox NeuName & ": bereits vorhanden"
End If
End Sub
LG UweD
AW: Tabellenblatt einfügen und speichern
16.01.2023 13:32:20
Romy
Hey UweD
Danke, das funktioniert! Ich habe aber ein Denkfehler gemacht. Es müsste rechts angelegt werden (aktuell legt es das neue Tabelenblatt links an)
Dann wäre mein Problem gelöst :) Zumindest für heute ;)
Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 13:35:25
UweD
Dann mache aus dem before:= ein after:=

Sub PotenzialNeu()
Dim NeuName As String
NeuName = Worksheets("blank").Range("B1")
'prüfen ob Blatt schon existiert/vorhanden
If IsError(Evaluate("'" & NeuName & "'!A1")) Then ' Hochkomma wegen möglicher Leerzeichen
'Neues Blatt anlegen und Name zuweisen
Worksheets("blank").Copy after:=Worksheets("blank")
With ActiveSheet
.Name = NeuName
.Shapes(1).Delete 'wenn es nur einen Button gibt
'.Shapes("Schaltfläche1").Delete 'sonst Name anpassen
End With
Else
MsgBox NeuName & ": bereits vorhanden"
End If
End Sub

Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 13:39:03
Romy
Hey UweD
Ha, jetzt habe ich sogar noch was gelernt!
Danke Dir UweD!
LG
Romy
AW: Tabellenblatt einfügen und speichern
16.01.2023 11:48:09
Guesa
Hallo Romy
Versuch mal so

Sub PotenzialNeu()
'Vorlagenblatt kopieren, einfügen und umbenennen mit fortlaufender Nr.
Dim wbAktiv As Workbook
Dim wks As Worksheet
Dim intNrName As Integer
Dim strKopieNeu As String
Dim strKopie As String
strKopie = [B1] & " " 'Startext für Name Blatt-Kopie
Dim strVorlage As String
strVorlage = "blank" 'Name des Vorlageblattes
Dim varEinfuegeBlatt As Variant
varEinfuegeBlatt = "Datenquelle" 'Name oder Nummer des Blatts vor _
dem eingefügt werden soll
Dim strFormat As String
strFormat = "0" 'Format für Zählziffer bei Namen
On Error GoTo Fehler
Set wbAktiv = ActiveWorkbook
'Nummer des Neuen Namens ermitteln
'Es wird die höchste Zählnummer der Namen ermittelt, die mit dem Kopie-Namen beginnnen
For Each wks In wbAktiv.Worksheets
With Application.WorksheetFunction
If LCase(Left(wks.Name, Len(strKopie))) = LCase(strKopie) Then
If IsNumeric(Mid(wks.Name, Len(strKopie) + 1)) Then
intNrName = .Max(intNrName, CLng(Mid(wks.Name, Len(strKopie) + 1)))
End If
End If
End With
Next
'Neuen Namen ermitteln
strKopieNeu = strKopie & Format(intNrName + 1, strFormat)
'Neues Blatt anlegen und Name zuweisen
wbAktiv.Worksheets(strVorlage).Copy before:=wbAktiv.Worksheets(varEinfuegeBlatt)
ActiveSheet.Name = strKopieNeu
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
End Sub

Gruß, Guesa
Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 11:53:33
Romy
Hey Guesa
Das klappt, vielen Dank!
Jetzt muss ich nur den Teil mit der Fortlaufenden Nummerierung los werden, so dass nur der Wert von B1 abgespeichert wird.
Eigentlich möchte ich ja nur, dass es meine Tabellenblatt-Vorlage (mit den dazugehörigen Makros) (Tabellenblatt Vorlage heisst: blank) als ein neues Tabelenblatt abspeichert, am besten links von der Tabellenblatt-Vorlage, mit Name/Wert in B1. Und gerne möchte ich das regelmässig nutzen, also mehr als zwei Durchläufe.
AW: Tabellenblatt einfügen und speichern
16.01.2023 12:24:41
Guesa
Dann müsstest du doch jedes eingefügte Blatt wieder umbenennen, denn zweimal gleicher Name geht nicht, oder verstehe ich
da was falsch? :-)
Anzeige
AW: Tabellenblatt einfügen und speichern
16.01.2023 12:31:40
Romy
Es wird immer ein neuer Wert im B1 sein, nie derselbe Name.
AW: Tabellenblatt einfügen und speichern
16.01.2023 12:54:28
Guesa
Hi Romy
Dann sollte das doch reichen

Sub BlattKopieren()
'** Neues benanntes Tabellenblatt einfügen
'** einfügen als letztes Blatt
'** Dimensionierung der Variablen
Dim blatt As Object
Dim BlattName As String
Dim bolFlg As Boolean
'** Blattname festlegen
BlattName = [B1]
'** Prüfen, ob das Blatt, welches eingefügt werden soll bereits vorhanden ist
'** Nur einfügen, wenn Blatt noch nicht vorhanden ist
For Each blatt In Sheets
If blatt.Name = BlattName Then bolFlg = True
Next blatt
'** Blatt nur einfügen, wenn noch nicht vorhanden
If bolFlg = False Then
With ThisWorkbook
.Sheets.Add Before:=Sheets(1)
.ActiveSheet.Name = BlattName
End With
End If
End Sub
Gruß, Guesa
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige