Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blattname prüfen

Forumthread: Blattname prüfen

Blattname prüfen
01.11.2013 23:36:56
Uwe
Hallo VBA Profis,
wie kann ich den folgenden Code eine Prüfung einbauen, ob der eingegebene Blattname schon vorhanden ist?
Sub Blatt_kopieren()
Dim NeuerName As String
With Sheets(1)
.Copy Before:=ActiveSheet
End With
NewName = InputBox("Für welchen Monat ist die neue Tabelle? (z.B. Okt 2013)")
ActiveSheet.Name = NeuerName
End Sub

VG Uwe

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Blattname prüfen ...
02.11.2013 00:00:34
Matthias
Hallo Uwe
Su geht das ja auch nicht.
Du solltest Dich entscheiden
NeuerName oder NewName
Ich habs mal etwas umgestrickt ;-)
Option Explicit
Sub Blatt_kopieren()
Dim NeuerName As String, wks As Worksheet
NeuerName = InputBox("Für welchen Monat ist die neue Tabelle?" & vbLf & "z.B. Okt 2013", , "Okt  _
2013")
If StrPtr(NeuerName) = 0 Then Exit Sub
For Each wks In ThisWorkbook.Worksheets
If wks.Name = NeuerName Then
MsgBox "Dieser RegisterName ist schon vorhanden"
Exit Sub
End If
Next
With Sheets(1)
.Copy Before:=ActiveSheet
End With
ActiveSheet.Name = NeuerName
End Sub
Desweiteren solltest Du auch sicherstellen, das keine unzulässigen Zeichen für den Registernamen
eingegeben werden.
Gruß Matthias

Anzeige
AW: Blattname prüfen ...
02.11.2013 00:07:27
Uwe
Danke Matthias, das funktioniert.
Wie mach ich da noch mit den Sonderzeichen?
Gruß Uwe

unzulässige Zeichen im RegisterNamen prüfen ...
02.11.2013 00:14:57
Matthias
Hallo Uwe
Option Explicit
Sub Blatt_kopieren()
Dim NeuerName As String, wks As Worksheet, X&
NeuerName = InputBox("Für welchen Monat ist die neue Tabelle?" & vbLf & "z.B. Okt 2013", , "Okt  _
2013")
If StrPtr(NeuerName) = 0 Or NeuerName = "" Then Exit Sub 'Abbruch oder leer
For Each wks In ThisWorkbook.Worksheets
If wks.Name = NeuerName Then
MsgBox "Dieser RegisterName ist schon vorhanden"
Exit Sub
End If
Next
For X = 1 To Len(NeuerName)
If VBA.Mid(NeuerName, X, 1) = ":" Then MsgBox "unzulässiges Zeichen im Namen": Exit Sub
If VBA.Mid(NeuerName, X, 1) = "/" Then MsgBox "unzulässiges Zeichen im Namen": Exit Sub
If VBA.Mid(NeuerName, X, 1) = "\" Then MsgBox "unzulässiges Zeichen im Namen": Exit Sub
If VBA.Mid(NeuerName, X, 1) = "?" Then MsgBox "unzulässiges Zeichen im Namen": Exit Sub
If VBA.Mid(NeuerName, X, 1) = "[" Then MsgBox "unzulässiges Zeichen im Namen": Exit Sub
If VBA.Mid(NeuerName, X, 1) = "]" Then MsgBox "unzulässiges Zeichen im Namen": Exit Sub
Next
With Sheets(1)
.Copy Before:=ActiveSheet
End With
ActiveSheet.Name = NeuerName
End Sub
Gruß Matthias

Anzeige
AW: unzulässige Zeichen im RegisterNamen prüfen ...
02.11.2013 00:32:16
Uwe
Echt Spitze Matthias!
Danke für die Hilfe um diese Zeit, gute Nacht und schönes Wochenende.
Grüße Uwe

Blattnamen prüfen
02.11.2013 00:34:49
Erich
Hi Uwe,
von Nepumuk stammt das hier (leicht angepasst):

Option Explicit
' AW: Arbeitsblatt kopieren - von Nepumuk am 03.02.2009 12:41:46
' www.herber.de/forum/archiv/1044to1048/1046594_Arbeitsblatt_kopieren.html
Public Sub Blatt_kopieren()
Dim objRegEx As Object, objMatch As Object, objSheet As Object
Dim blnFound As Boolean, vntReturn As Variant
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.Pattern = "[\\\/\:\*\?]"
End With
Do
Do
vntReturn = InputBox("Für welchen Monat ist die neue Tabelle?" & _
vbLf & "z.B. Okt 2013", "Eingabe des Blattnamens", "Okt 2013")
If StrPtr(vntReturn) = 0 Then Exit Sub
If Len(Trim$(vntReturn)) > 0 Then
If Len(Trim$(vntReturn)) 
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Blattnamen prüfen
02.11.2013 00:56:10
Uwe
Danke auch dir Erich. Der Code funktioniert genauso.
Hab mich jetzt für den Matthias entschieden, ist für mich verständlicher. :-)
Gruß Uwe

bitte beachte auch die anderen Beiträge !
02.11.2013 13:49:14
Matthias
Hallo
Die Prüfung auf die Länge des Registerblattnamen hatte ich nicht bedacht, ist aber genauso wichtig!
Gruß Matthias

Anzeige
AW: Blattnamen prüfen
02.11.2013 08:16:17
Luschi
Hallo Erich,
in meinem Excel-Wissenspeicher hatte ich mir mal diesen Pattern-Ausdruck notiert:
.Pattern = "^[^\/\\:\*\?\|\""""]{1,31}$"
{1,31} - bestimmt die Anzahl der kontrollierten Zeichen
wird die übergebene Zeichenlänge überschritten wird 'False zurückgegeben
auch wenn die Zeichen selbst erlaubt sind!
So ist der senkrechte Strich '|' zwar als Blattnamenszeichen erlaubt, aber nicht in einem Dateinamen.
Gruß von Luschi
aus klein-Paris

Anzeige
@Luschi
03.11.2013 09:52:48
Erich
Hi Luschi,
den Teil "{1,31}$" kannte Nepumuk sicher auch, als er den zitierten Code schrieb.
Es gibt einen vernünftigen Grund, die Textlänge separat zu prüfen:
Das ermöglicht bzw. vereinfacht die Ausgabe präziser, spezifischer Fehlermeldungen.
Da es in diesem Thread nur um Blattnamen geht, würde ich "|" hier weglassen.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönen Sonntag allerseits!
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige