Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
724to728
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mehrere Textboxen verwalten

Mehrere Textboxen verwalten
03.02.2006 07:33:43
Roland
Hallo,
ich habe in einer Userform 20 Textboxen, die nach Eingabe auf Nummerisch überprüft werden. Allerdings wird nicht in jede Textbox ein Eintrag gemacht.
Nun zur eigentlichen Frage:
Muß ich für jede Textbox die Routine:

Private Sub UserPort1_Change()                     ' .... bis UserPort20
If Not IsNumeric(UserPort11) Then
MsgBox "Bitte nur Nummern eintragen!"
End If
End Sub

schreiben oder gibt es eine Möglichkeit das zu Optimieren?
Beste Grüsse
Roland

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Textboxen verwalten
03.02.2006 08:03:14
Heiko
Hallo Roland,
nein mußt du nicht, man kann es über ein Klassenmodul zusammenfassen.
Guckst du Hier:
http://www.online-excel.de/excel/grusel_vba.php?f=7
Oder hier, da wurde gerade ein ähnliches Problem besprochen.
https://www.herber.de/forum/messages/727318.html
https://www.herber.de/forum/messages/726838.html
Aber wenn es einmalig um die 20 Textboxen geht, bis du mit kopieren und 19 mal einfügen des Codes und ändern der Zahlen bestimmt schneller.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Mehrere Textboxen verwalten
03.02.2006 08:03:15
Matthias
Hallo Roland,
du könnstest die Abrage auf das Verlassen der Textbox beschränken und eine Funktion zur Prüfung verwenden:

Private Sub UserPort1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = NumTest(UserPort1)
End Sub
Private Sub UserPort2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = NumTest(UserPort2)
End Sub
Private Sub UserPort3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = NumTest(UserPort3)
End Sub
' usw.
Private Function NumTest(tb As MSForms.TextBox) As Boolean
Dim tmp As Boolean
tmp = (tb <> "" And Not IsNumeric(tb))
If tmp Then
MsgBox "Bitte eine Zahl eingeben!"
With tb
.SelStart = 0
.SelLength = Len(tb)
End With
End If
NumTest = tmp
End Function

Dann ginge noch was mit Klassenmodul, aber damit kenn ich mich nicht aus :-(
Gruß Matthias
Anzeige
AW: Mehrere Textboxen verwalten
03.02.2006 08:03:39
eugen
hi
mit folgendem code kommt es erst gar nicht zu
nicht nummerischen einträgen

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub

eigentlich müsstest du das in jede textbox kopieren, oder

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Call checker(KeyAscii)
End Sub

Public Sub checker(ByRef key As MSForms.ReturnInteger)
If key 57 Then
key = 0
End If
End Sub
mfg
Anzeige
AW: Mehrere Textboxen verwalten
03.02.2006 08:26:26
Roland
Hallo,
besten Dank für eure Info's, da hab ich jetzt Stoff genug um mich einzuarbeiten!
Mit Klassenmodulen kenne ich mich auch noch nicht aus, werd mich aber darin versuchen.
Gruß
Roland
AW: Mehrere Textboxen verwalten
03.02.2006 19:07:21
Roland
Hallo,
ich hab das Problem jetzt doch mit 20 Textboxen gelöst, die aber eine bestimmte Nummerierung (matrix) im Namen haben, sodaß ich diese in einer Funktion direkt weiterbearbeiten kann!
hier ein Auszug:
.
.
.

Private Sub UserPort53_Change()
abbr = PortSummen(5, 3)
End Sub


Private Sub UserPort54_Change()
abbr = PortSummen(5, 4)
End Sub

Function PortSummen(sNu, feld)
Dim zUs(5) As Integer
zUs(1) = 10
zUs(2) = 48
zUs(3) = 200
zUs(4) = 500
zUs(5) = 1500
yUser = Controls("UserPort" & sNu & feld).Value
If Not IsNumeric(yUser) Then
MsgBox "Bitte nur Nummern eintragen!"
Else
PortEin(sNu, feld) = Val(yUser)
End If
Summe(sNu) = PortEin(sNu, 1) + PortEin(sNu, 2) + PortEin(sNu, 3) + PortEin(sNu, 4)
If Summe(sNu) > zUs(sNu) Then
MsgBox "Eingabe zu hoch, bitte korrigieren! " _
& Chr(13) & "Die Summe darf max. " & zUs(sNu) & " ergeben!"
Else
Controls("Summe" & sNu).Caption = Summe(sNu)
End If
End Function
Vielleicht hat noch jemand einen Verbesserungsvorschlag, wäre ganz toll!
beste Grüsse
Roland
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige