Anzeige
Archiv - Navigation
1140to1144
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

auf doppelte Arbeitsblätter prüfen

auf doppelte Arbeitsblätter prüfen
Space
Guten Morgen Forum,
mein Problem: Ich habe eine Userform mit einer Textbox die bei Eingabe und Bestätigung mit O.K. ein neues Arbeitsblatt anlegt.
erste Frage: gibt es eine Möglichkeit nach betätigen von O.K. erst einmal zu prüfen, ob der in der Textbox eingegebene Name des Arbeitsblattes bereits vorhanden ist und wenn ja eine MsgBox auszugeben?
zweite Frage: Die Zeichen die zu einem Error führen sollen auch nicht eingegeben werden. Welche sind das genau und wie kann ich das realsieren?
bisher habe ich das über On Error GoTo gelöst:
On Error GoTo ErEx
....
ErEx:
MsgBox ("Bitte überprüfen Sie ob der Name des Verteilers bereits besteht oder eines der folgenden Zeichen verwendet wurde:\/-")
ActiveWindow.SelectedSheets.Delete
TextBox1 = ""
Exit Sub
Problem: Man muss das Löschen des Tabellenblattes nochmal extra bestätigen (automatische Abfrage von Excel). Das ist unschön und könnte den Anwender verwirren ...
Viele Grüße
Space

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: auf doppelte Arbeitsblätter prüfen
03.03.2010 09:33:28
Josef

Hallo Space,
das geht z.B. so.
Private Sub CommandButton1_Click()
  If IsValidSheetName(TextBox1) Then
    If Not SheetExist(TextBox1) Then
      'hier dein Code...
    Else
      MsgBox "Blatt gibt's schon!"
      TextBox1 = ""
    End If
  Else
    MsgBox "Name ungültig!"
    TextBox1 = ""
  End If
End Sub

Private Function IsValidSheetName(ByVal strName As String) As Boolean
  Dim objRegExp As Object
  
  Set objRegExp = CreateObject("vbscript.regexp")
  
  With objRegExp
    .Global = True
    .Pattern = "^[^\/\\:\*\?\[\]]{1,31}$"
    .IgnoreCase = True
    IsValidSheetName = .test(strName)
  End With
  
  Set objRegExp = Nothing
  
End Function

Private Function SheetExist(ByVal sheetName As String, Optional Wb As Workbook) As Boolean
  Dim wks As Worksheet
  On Error GoTo ERRORHANDLER
  If Wb Is Nothing Then Set Wb = ThisWorkbook
  For Each wks In Wb.Worksheets
    If wks.Name = sheetName Then SheetExist = True: Exit Function
  Next
  ERRORHANDLER:
  SheetExist = False
End Function

Gruß Sepp


Anzeige
saubere Lösung, Sie funktioniert
03.03.2010 09:44:36
Space
Vielen Dank Sepp für die schnelle Rückmeldung!!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige