Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1336to1340
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

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

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

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!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige