Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1416to1420
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

Schleifenfilter = nur gefüllte Textbox

Schleifenfilter = nur gefüllte Textbox
25.03.2015 18:21:10
Tobias
Hallo ihr Profis :)
Mal wieder eine Frage:
Ich spreche derzeit 22 Textboxen mit einer Schleife an. Wenn diese einen Inhalt haben, wird dieser in eine Zeile geschrieben. Soweit so gut.
Zwei Probleme:
1.
die Schleife läuft extrem langsam. Welche Optimierungsvorschläge gibt es?
2.
Aufgrund der Dauer habe ich eine Progressbox ins Boot geholt. Bei dieser ist das Problem, dass sie wenn nur die ersten 5 Textboxen gefüllt sind, insgesamt 5 Schritte hat und dann extrem schnell auf 100% hochschnellt.
Gibt es eine Möglichkeit vorher zu prüfen, wieviel Werte übertragen werden müssen und nur die nummer der gefüllten Textboxen an die Schleife zu schicken?
In meinem Skript wäre "max" also als variabel zu gestalten.
Ich freue mich über Tipps und Hinweise :)

Private Sub UserForm_Activate()
Dim n As Long, tot As Long
max = 22
ProgressOneVarietySafe.Caption = "Saving data, please wait..."
For n = 1 To max
If Len(UserForm1.Controls("TextBox" & CStr(n)).Value) > 0 Then
Sheets(Userform3.ComboBox1.Text & "_data").Cells(UserForm1.Controls("TextBox" &  _
CStr(n)).Tag, UserForm1.ComboBox1.ListIndex + 3).Value = UserForm1.Controls("TextBox" & CStr(n)).Text
End If
ProgressBar n / max
Next n
Unload ProgressOneVarietySafe
If UserForm1.CheckBox1.Value = True Then
UserForm2.Show
Else
Unload UserForm1
Unload Userform3
End If
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleifenfilter = nur gefüllte Textbox
25.03.2015 18:44:44
ChrisL
Hi Tobias
Ferndiagnose: kann es sein, dass die Neuberechnung der Tabelle so lange dauert? Einfach mal die automatische Berechnung ausschalten.
Kannst die Textboxen erst mit Schleife in eine Array Variable laden und mitzählen. Danach wenn grösser 5 in einer weiteren Schleife in die Tabelle zurück schreiben. Vielleicht eine Millisekunde schneller als wenn du die Schleifen zweimal über die Textbox laufen lässt.
cu
Chris

AW: Schleifenfilter = nur gefüllte Textbox
25.03.2015 19:10:13
Tobias
Vielen Dank Chris,
ich dachte ich hätte zu Anfang und Ende des Makros Events, Screenupdate, und Calculation an bzw ausgemacht. Habe ich aber wohl nicht... Vielen Vielen Dank...
Kannst du mir dennoch ein Ansatz für die Array Lösung geben?
Habe ich noch nie mit gearbeitet :(
Die Datei wird ausgebaut werden auf mehr als 100 Eingabefeldern, und eine Progressbox finde ich sehr angenehm, damit der Anwender merkt das etwas passiert.
Nochmals: Vielen Vielen Dank

Anzeige
AW: Schleifenfilter = nur gefüllte Textbox
26.03.2015 08:15:04
ChrisL
Hi Tobias
Hier ein Beispiel (als Ansatz zu verstehen):
Sub t()
Dim ar(21) As Variant
Dim i As Integer, iCounter As Integer
For i = 1 To 22
If "Bedingung" = "Bedingung" Then iCounter = iCounter + 1
ar(i - 1) = "Textbox" & i
Next i
If iCounter > 5 Then
For i = 1 To 22
Cells(i, 1) = ar(i - 1)
Next i
End If
End Sub
cu
Chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige