Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
440to444
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
440to444
440to444
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Prüfung ob Tabellenblattname bereits vorhanden?

Prüfung ob Tabellenblattname bereits vorhanden?
17.06.2004 15:16:59
Oliver
Hi an alle,
ich komm mal wieder nicht weiter ohne Eure Hilfe. Ich habe eine UserForm, in der ich eine Jahreszahl eingebe. Beim Betätigen des OK-Buttons wird mir ein Tabellenblatt mit dem Namen der eingegebenen Jahreszahl angelegt. Und hier bräuchte ich Hilfe. Ich würde nun gerne vor dem Ertsellen des Blattes prüfen, ob es das Blatt schon gibt. Wenn ja, dann soll eine Meldung erscheinen und die Anweisung soll beendet werden, ansonsten soll das Blatt erstellt werden. Ich schreibe er noch meinen bereits vorhanden Code mit hinein und hoffe, jemand hat Lust und Zeit mir zu helfen,
Hier der Code:

Private Sub CommandButton2_Click()
Unload Jahreszahleingabe
Eingabe = TextBox1
Vorjahr = Eingabe - 1
If Eingabe = "" Or Len(Eingabe) < 4 Then
Select Case MsgBox _
("Die Jahreszahl muss aus 4 Ziffern bestehen. Bitte Jahreszahl erneut eingeben", _
vbOKOnly, "Fehler")
Case 1 'Schaltfläche OK
SendKeys "{TAB}"
SendKeys "{TAB}"
End Select
End If
If Len(Eingabe) = 4 Then
Worksheets("Vorlage").Visible = True
Sheets("Vorlage").Copy Before:=Sheets("Vorlage")
Sheets("Vorlage (2)").Name = Eingabe
Range("G1, Y1") = Eingabe
Worksheets("Vorlage").Visible = False
Call Symbolleiste_löschen
Call Symbolleiste_erstellen
'Auswertung ob es sich um ein Schaltjahr handelt.
If Range("AQ31") = 1 Then 'Wenn in Zelle AQ31 die Zahl 1 steht (es handelt sich um ein Schaltjahr) dann...
Range("D35") = "29" 'Trage in Zelle D35 die Zahl 29 ein.
Range("D35").Select
With Selection
.HorizontalAlignment = xlRight
End With
End If
ActiveSheet.Protect ""
Autovervollständigen_Monat Vorjahr 'Das Makro "Autovervollständigen_Monat" wird aufgerufen
'und die Variable "Vorjahr" wird an das Makro übergeben.
End If
End Sub

Danke Euch schon mal für die Hilfe,
Oliver

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfung ob Tabellenblattname bereits vorhanden?
Veit
Moin, Moin,
Dein Problem sollte durch folgende Zeilen gelöst werden:

Sub kljhlgol()
For i = 1 To Worksheets.Count
If Sheets(i).Name = TextBox1.Value Then
MsgBox "Gibts schon"
Exit Sub
End If
Next i
End Sub

'Gruß
'Ein Veit
Danke Dir, aber es ergibt sich da noch eine Frage!
Oliver
Hi Veit,
genau das wars, was mir in meiner Anweisung noch fehlte. Danke Dir. Mir ist dabei aber noch etwas in meiner Datei aufgefallen, über was ich vorher nicht nachgedacht hatte. Meine Tabellenblätter erhalten als Namen die Jahreszahl, die in der UserForm eingegeben werden. Wenn also jetzt jemand nicht als Jahreszahl das nächste Jahr angibt, sondern das darauffolgende Jahr, kommt es zu einer Fehlermeldung, bedingt durch die ganzen anderen Anweisungen, die zum Teil miteinander verknüpft sind. daher benötige ich jetzt noch eine Überprüfung, ob die eingegebene Jahreszahl korrekt ist.
Als Beispiel: Es existieren die Tabellenblätter 2000 bis 2004. Dann darf nur ein Tabellenblatt mit dem Namen 2005 erstellt werden. Gibt jemand anstelle von 2005 z.B. 2006 ein, soll wieder eine MsgBox kommen, die darauf hinweist, dass die Eingabe falsch war. Hast Du dazu auch noch eine Lösung für mich? Wäre jedenfalls riesig.
Gruß,
Oliver
Anzeige
AW: Danke Dir, aber es ergibt sich da noch eine Frage!
Veit
Moin, Moin,
Wenn das so ist, gibt es 2 Möglichkeiten (mir gefällt die 2. besser):
'entweder
'Du Konntrollierst die Plausibilität

Sub lkasdg()
Dim allesok As Boolean
allesok = False
For i = 1 To Worksheets.Count
If Sheets(i).Name = TextBox1.Value Then
MsgBox "Gibts schon"
Exit Sub
End If
'da ich nicht weiß ob Deine Blätter chronologisch angeordnet sind
If Sheets(i).Name + 1 = TextBox1.Value Then allesok = True
Next i
'wenn das letzte Blatt immer das mit der höchsten Jahreszahl ist, kannst Du Dir das (allesok) sparen
'und einfach nur testen ...
'if Worksheets(Worksheets.Count).Name+1=TextBox1.Value then 'Blatt dazu
If allesok = True Then
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = TextBox1.Value
Else
MsgBox "Eingabe falsch"
Exit Sub
End If
End Sub

'ODER
'wenn es sowieso immer das folgende Jahr sein MUß, kannst Du dem User die Arbeit der Eingabe auch abnehmen
'damit bist Du auch wieder ein Risiko von Fehlern los (und der Code ist schöner)

Sub lökjxydfölg()
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Worksheets(Worksheets.Count - 1).Name + 1
End Sub

'Gruß
'Ein Veit
Anzeige
Prima und nochmal danke!
Oliver
Hi Veit,
danke Dir, das war genau was ich benötigte.
Gruß,
Oliver

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige