Anzeige
Archiv - Navigation
1900to1904
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
Schleife in UF solang Textbox leer ist.
16.10.2022 15:43:19
Barolt
Hallo
ich benötige wieder einen Denkanstoß. Im netzt habe ich einiges gefunden, welches jedoch unklar für mich ist und nicht funktioniert.
Ziel: Ein Formular soll Tabellenblätter anlegen
Es gibt ein Userform mit 2 Textboxen.
Textbox 1: Anzahl der sheets die angelegt werden soll
Textbox 2: Namen für den neu anzulegende sheet
Textbox1 soll dafür sorgen das der loop x-fach ausgeführt wird.
CODE:

Private Sub CommandButton1_Click()
Dim AnzahlSheets As Long
AnzahlSheets = UserForm1.TextBox1.Value
Dim i As Long
For i = 1 To AnzahlSheets
If TextBox2 = "" Then
TextBox2.SetFocus
Else
Sheets.Add
With ActiveSheet
.Name = TextBox2.Value & "(" & i & ")"
TextBox2 = ""
End With
If AnzahlSheets = i Then
Exit Sub
End If
i = i + 1
End If
Next
End Sub
Mein code macht zum Teil das was ich möchte, verstehe aber nicht wo mein denkfehler liegt.
- es bleibt im Textbox2 stecken solang diese leer ist.
- Macht ein tabellenblatt mit dem Namen aus textbox2
ABER(!) zählt nicht i weiter ?
unload userform1 kommt wenn alles durch ist. ;)
Ich bin sehr dankbar für ein denkanstoß
Vielen Dank
Barolt

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife in UF solang Textbox leer ist.
16.10.2022 16:14:44
Daniel
Hi
Die Abfrage, ob die Textboxen befüllt sind, solltest du machen bevor die Schleife loslegt.
Also im Prinzip so:

Private Sub CommandButton1_Click()
Dim i as long
If Textbox2.value = "" Then
Msgbox "Bitte Namen eintragen"
Textbox2.SetFocus
Elseif not isnumeric(Textbox1.value) then
Msgbox "Bitte korrekte Anzahl eintragen"
Textbox1.setfocus
Else
For i = 1 to Clng(TextBox1.Value)
Sheets.Add
ActiveSheet.Name = Textbox2.value & i
Next
End if
End Sub
Und die nächste Frage wäre, warum referenzierst du Textbox1 mit Userform1 davor und Textbox2 nicht?
Liegt die Textbox1 in einer anderen Userform als der Button und die Textbox2?
Nur dann wäre das notwendig. Solange die Steuerelemente zur selben Userform gehören wie das Makro, kann man die Userformbezeichnung weglassen.
Gruß Daniel
Anzeige
AW: Schleife in UF solang Textbox leer ist.
16.10.2022 17:56:30
Barolt
Hallo,
Vielen Dank für deine Erste Hilfe.
zu deine Frage --- warum referenzierst du Textbox1 mit Userform1 davor und Textbox2 nicht? Halt VBA ohne viel Erfahrung, wie man merkt.
Ich habe mich wahrscheinlich nicht klar ausgedruckt.
Textbox1 zeigt an wie viele Tabellenblätter es geben soll
Danach trage ich ein neuen Namen in Textbox2 ein, bestätige dies mit den CommandButton. Neues Blatt wird angelegt mit Namen; textbox2 wird geleert und der Benutzer muss ein neuen Namen eingeben. solange bis die Schleife durchlaufen ist. (Anzahl aus Textbox1)
Noch immer Fragezeichen über mein Kopf
Anzeige
AW: Schleife in UF solang Textbox leer ist.
16.10.2022 18:11:31
Daniel
In dem Fall würde ich keine zweite Textbox anlegen, sondern mit einer Inputbox arbeiten:

For i = 1 to Clng(Textbox1.Text)
Do
BlattName = Inputbox("Name Blatt Nr. " & i)
If Blattname = "" Then
Msgbox "Blattname angeben!"
ElseIf Len(Blattname) > 31 Then
Msgbox "Blattname zu lang"
Else
Exit do
End if
Loop
Sheets.Add
ActiveSheet.Name = Blattname
Next
Gruß Daniel
AW: Schleife in UF solang Textbox leer ist.
17.10.2022 16:54:04
Barolt
Hallo, die schleife über einen inputbox klappt. Danke dafür :))
Dennoch suche ich eine Lösung / möglichkeit, alles über den textbox im userform zu steuern ohne ein inputbox. Ich bin mir sicher das es möglich ist...die frage ist nur wie ?
Anzeige
AW: Schleife in UF solang Textbox leer ist.
17.10.2022 18:42:59
Daniel
Hi
dann vielleicht so im Click-Event des Buttons.
Code bitte nur als Anregung verstehen, ich habs nicht getestet.

dim sh as Worksheet
If Val(Textbox1.Text) = 0 Then
Msgbox "Bitte die Anzahl der zu erzeugenden Blätter eingeben"
Exit Sub
End if
If Textbox2.Text = "" Then
Msgbox "Bitte Blattnamen eingeben"
Exit Sub
End if
for each sh in ActiveWorkbook.Worksheets
if sh.Name = Textbox2.Text then Exit for
next
if not sh is Nothing then
msgbox "Blattname bereits vorhanden, bitte ändern."
exit sub
end if
if len(Textbox2.Text) > 31 Then
msgbox "Name zu lang"
exit sub
end if
Sheets.Add
ActiveSheet.Name = Textbox2.Text
Textbox2.Text = ""
Textbox1.Text = Val(Textbox1.Text) - 1
if Textbox1 = "0" then
Msgbox "Alle Blätter angelegt"
Textbox1.Text = ""
end if
du musst erst die Anzahl der Blätter eingeben, die du erzeugen willst.
danach gibst du den Blattnamen ein und klickst den Button, bis alle Blätter angelegt sind.
Um das zu kontrollieren wird der Wert in der Textbox1 runtergezählt bis 0
Gruß Daniel
Anzeige
AW: Schleife in UF solang Textbox leer ist.
17.10.2022 18:48:44
barolt
Hi Daniel
DAS(!!!) war genau das was ich gesucht habe. Funktioniert perfekt. Jetzt werde ich den Code studieren. Echt vielen vielen Dank!! :))
Grüße aus Berlin
Barolt

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige