Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
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

TextBox Schleife!?

TextBox Schleife!?
12.10.2021 09:44:44
Gerd
Hallo Zusammen,
ich habe mehrere TextBoxen (insgesamt 72 Stück), die in der Zeichenanzahl begrenzt sind und somit auch direkt in die nächtse Box springen.
Zudem so jeder Boxinhalt in einer Tabellenzelle erscheinen.
Beispiel:

Private Sub TextBox1_Change()
If Len(TextBox1.Text) = 8 Then TextBox2.SetFocus
Range("A3").Value = TextBox1.Value
End Sub
Private Sub TextBox2_Change()
If Len(TextBox2.Text) = 8 Then TextBox3.SetFocus
Range("A4").Value = TextBox2.Value
End Sub
Hier nun meine Frage:
Wie bekomme ich es hin, dass ich nicht für jede Box eine einzelne Private Sub schreiben muss? Ist es möglich, es in einer unter zu bringen?

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 72 TextBox'en?
12.10.2021 09:59:42
Fennek
Hallo,
ist es wirklich nötig mit so vielen TextBoxen zu arbeiten?
Wenn das Ergebnis immer Strings mit 8-Zeichen sein sollen, kann man auch 1 TextBox nutzen und den String nach der Eingabe teilen.
mfg
AW: 72 TextBox'en?
12.10.2021 10:33:00
Gerd
....der Hinweis ist gut, aber ich weiß ihn nicht um zu setzen ;(
mittels Klasse
12.10.2021 10:45:39
Rudi
Hallo,
in der Userform:

Option Explicit
Dim objTxtBox(1 To 72) As New clsTXTBOX
Private Sub UserForm_Activate()
Dim i As Integer
For i = 1 To 72
Set objTxtBox(i).myTxtBox = Controls("Textbox" & i)
Next
End Sub
In einem neuen Klassenmodul 'clsTXTBOX':

Option Explicit
Public WithEvents myTxtBox As msforms.TextBox
Sub myTxtBox_change()
Dim num As Integer
num = --Mid(myTxtBox.Name, 8)
If Len(myTxtBox) = 8 Then
If num = 72 Then
With UserForm1.TextBox1
.SetFocus
.SelStart = 0
.SelLength = 8
End With
Else
UserForm1.Controls("TextBox" & num + 1).SetFocus
End If
End If
End Sub
Gruß
Rudi
Anzeige
AW: oder mittels Kreativität
12.10.2021 12:55:43
Daniel
Wenns von der Anordnung der Werte her zulässig ist:
Erstellen eine Listbox mit 72 leeren Zeilen und eine Textbox
Setze den Listindex auf 0 (erster Eintrag)
Im Change-Event Programmierstil du dann, dass sobald 8 Zeichen eingegeben wurden folgendes passiert:
- der Wert der Textbox wird in die Listboxzeile mit dem Listindex geschrieben
- die Textbox wird geleert
- der Listindex wird um 1 erhöht.
Gruß Daniel
AW: TextBox Schleife!?
12.10.2021 13:26:11
Daniel
wie gesagt, eine Textbox.
wenn das ganze in einem Tabellenblatt laufen soll, so
- erstelle eine Textbox
- platziere sie in der Zelle A3
- füg ihr diesen Code hinzu

Private Sub TextBox1_Change()
With TextBox1
If Len(.Text) >= 8 Then
.TopLeftCell.Value = .Text
.Text = ""
.Top = .TopLeftCell.Offset(1, 0).Top
End If
End With
End Sub
dann sollte das laufen.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige