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

Nues Blatt

Nues Blatt
02.02.2016 09:48:07
Armin
Hallo Freunde
Ich habe einen Problem und ich habe diesen Problem schon mal hier erwähnt jedoch die Lösung die erwünscht habe, habe ich nicht bekommen deshalb schreibe ich noch mal.
(Ich bedanke mich bei dem Mitglied "Mathiass" dass mir auch geholfen hat)!
Ich habe eine Excel Tabelle (Siehe File Unten)und funktioneiert so wenn ich einen Name (XXX) vergebe, wird ein neues Arbeitsblatt mit dem Name (XXX) mit vordefinierte Vorlage erzeugt.
Jetzt stellen Sie sich vor, ich habe 12 Blätter erzeugt (B1,B2,..,B12) aber nun möchte ich den Name vom Blatt (B3) zum (X) ändern. Ich möchte es so passieren, ohne ein neues Blatt mit dem neuen Name erzeugt zu werden und einfach der Name geändert werden.
https://www.herber.de/bbs/user/102956.xlsm

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Neues Blatt
02.02.2016 09:57:15
Matthias
Hallo
Option Explicit
Sub VorlageKopieren(wsBez As String)
Dim i As Integer, Check
Dim Weiter As Boolean
nochmal:
Application.ScreenUpdating = False
Weiter = False
wsBez = Replace(wsBez, ":", "")
wsBez = Replace(wsBez, "\", "")
wsBez = Replace(wsBez, "/", "")
wsBez = Replace(wsBez, "?", "")
wsBez = Replace(wsBez, "*", "")
wsBez = Replace(wsBez, "[", "")
wsBez = Replace(wsBez, "]", "")
With ThisWorkbook
For i = 1 To .Sheets.Count
If .Worksheets(i).Name = wsBez Then
Check = MsgBox("Dieses Blatt existiert bereits!" & vbLf & "Soll es umbenannt  _
werden?", vbYesNo)
On Error GoTo nochmal
If Check = 6 Then Worksheets(wsBez).Name = InputBox("Bitte jetzt umbenennen", , _
wsBez): Exit Sub
If Check = 7 Then Exit Sub 'Nein
End If
Next
Select Case Len(wsBez)
Case Is > 31
wsBez = Left(wsBez, 31)
Case Is = 0
If MsgBox("Zelle ist leer - Standardname für neues Blatt vergeben?", vbYesNo) = vbYes _
Then
Weiter = True
Else
Exit Sub
End If
Case Else
wsBez = wsBez
End Select
.Worksheets("Vorlage").Copy After:=Sheets(.Sheets.Count)
If Weiter Then
.ActiveSheet.Name = "Blatt " & .Sheets.Count + 1
Else: If Check  6 Then .ActiveSheet.Name = wsBez
End If
End With
Worksheets("Steuerung").Activate
Application.ScreenUpdating = True
End Sub

https://www.herber.de/bbs/user/103218.xlsm
Gruß Matthias

Anzeige
AW: Nues Blatt
02.02.2016 10:00:36
Patrick
Hallo,
probiers mal damit:
Sheets("MomentanterName").Name = "GewünschterName"
Schönen Gruß!

AW: das hatte ich aber schon beschrieben ...
02.02.2016 10:40:31
Armin
Hallo Mathias,
ich weiß und ich bedanke mich auch dafür aber meinen Problem wie gesagt ich will wenn ich einen Name eines Blattes das schon erzeugt worden ist ändere (hier sir B3),kein neues Blatt erzeugt werden und der Name nur geänder werden!
Wenn du in diese Tabelle jetzt B3 durch X erzetzt,bleibt das alte Blatt da und wird einfach ein nues Blatt erzeugt und das möchte ich net.
Userbild
Userbild

Anzeige
nicht das "x" reinschreiben!
02.02.2016 10:56:57
Matthias
Hallo
Klicke auf die Zelle in der "B3" steht
Drücke F2 und dann Enter.
Damit schreibst Du erneut "B3" in die Zelle
Dann kommt sofort die Box
Du darfst dort nicht das "x" reinschreiben!
Gruß Matthias

AW: Warum nicht. Das ist eignetnlich mei Ziel
02.02.2016 11:05:52
Armin
Mathias muss genau das passieren...wenn ich statt B3 das X schriebe, da unten (Arbeitsblatt) soll auch auf X umbenannt und das alte B3-Arbeits blatt soll nicht mehr existieren!

Das ist eigentlich mein Ziel ...
02.02.2016 11:28:00
Matthias
Hallo
Eigentlich hatte ich das alles so eingabaut wie Du das wolltest.
Siehe Dein erster Beitrag zu diesem Thema
Deinen ursprünglichen Code wollte ich dabei so wenig wie nur möglich verändern!
Hier nun noch mal etwas verändert
https://www.herber.de/bbs/user/103224.xlsm
Es wird in die active Zelle der neue Registername mit übernommen(aus der Inpubox)
Hab jetzt im Moment aber keine Zeit mehr,
Schaue aber später nochmal rein.
Gruß Matthias

Anzeige
AW:
02.02.2016 11:57:04
Armin
Ich bedanke mich sehr sehr mathias,
Eigentlich das problem ist sehr einfach.
Ich erzeuge 10 neuen Blätter mit namen (x1 bis x10) und ich entscheide mich um und will das Blatt (x5) auf (x55) umbennnen.
Der Name des Blattes (x5) soll einfach uaf (x55) geändert werden ohne ein neues Blatt erzeug zu werden.

AW: Nues Blatt
02.02.2016 10:03:05
otto
Hi,
so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim namex
If Not Intersect(Target, Range("B:B")) Is Nothing And _
Target.Cells.Count = 1 Then
'VorlageKopieren (Target.Value)
namex = Target.Cells
Sheets(namex).name = Application.InputBox("Bitte neuen Blattnamen eingeben", " _
neuer Name")
End If
End Sub
Du gibst in B2 den ursprünglichen Namen ein, dann wird mit Inputbox der neue Name abgefragt.
otto

Anzeige
AW: Funktioneirt leider nicht
02.02.2016 11:15:17
Armin
Habs probiert..aber funktioniert nicht

AW: Nues Blatt
02.02.2016 11:34:42
UweD
Hallo
so als Lösungsansatz:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
With Application
.EnableEvents = False
.Undo
Vorher = Target.Value
.Undo
.EnableEvents = True
If Vorher = "" Then 'Neu
MsgBox "Blatt neu"
' hier jetzt das Anlegen des neuen Blattes ausführen
ElseIf Vorher  Target.Value Then ' geändert
Sheets(Vorher).Name = Target
Else
MsgBox "Es wurde nichts geändert"
Exit Sub
End If
End With
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Kannst du dann weiter ausbauen

Anzeige
AW: Funktioniert auch nicht
02.02.2016 11:40:37
Armin
womit soll kombiniert werden?
Es wird leider kein neues Blatt erzeugt.

AW: Funktioniert auch nicht
02.02.2016 12:37:10
UweD
hi
Ich hab es nochmal ausgebaut und auch deinen Code optimiert
In den Codebereich der Tabelle "Steuerung"

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim Vorher As String
If Not Intersect(Target, Range("B:B")) Is Nothing And _
Target.Row > 1 And Target.Cells.Count = 1 Then
With Application
.EnableEvents = False
.Undo
Vorher = Target.Value
.Undo
.EnableEvents = True
If Vorher = "" And Target  "" Then 'Neu
MsgBox "Blatt neu"
ElseIf Vorher  Target.Value Then ' geändert
Sheets(Vorher).Name = Tauschen(Target.Value)
Exit Sub
ElseIf Target  "" Then
MsgBox "Es wurde nichts geändert"
Exit Sub
End If
VorlageKopieren (Tauschen(Target.Value))
End With
End If
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

In das Modul

Sub VorlageKopieren(wsBez As String)
Dim i As Integer
Dim Weiter As Boolean
Application.ScreenUpdating = False
Weiter = False
With ThisWorkbook
If wsBez = "" Then
If MsgBox("Zelle ist leer - Standardname für neues Blatt vergeben?", vbYesNo) =  _
vbYes Then _
Weiter = True
Else
For i = 1 To .Sheets.Count
If LCase(.Worksheets(i).Name) = LCase(wsBez) Then
MsgBox "Dieses Blatt existiert bereits!"
Exit Sub
End If
Next
End If
.Worksheets("Vorlage").Copy After:=Sheets(.Sheets.Count)
If Weiter Then
.ActiveSheet.Name = "Blatt " & .Sheets.Count + 1
ElseIf wsBez  "" Then
.ActiveSheet.Name = wsBez
End If
End With
Worksheets("Steuerung").Activate
Application.ScreenUpdating = True
End Sub
Function Tauschen(wsBez)
wsBez = Replace(wsBez, ":", "")
wsBez = Replace(wsBez, "\", "")
wsBez = Replace(wsBez, "/", "")
wsBez = Replace(wsBez, "?", "")
wsBez = Replace(wsBez, "*", "")
wsBez = Replace(wsBez, "[", "")
wsBez = Replace(wsBez, "]", "")
wsBez = Left(wsBez, 31)
Tauschen = wsBez
End Function
Gruß UweD

Anzeige
AW: Prima...
02.02.2016 14:04:01
Armin
Genau was ich wollte..vielen vielen dank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige