TextBoxen auf inhalt Prüfen VBA
#1
Hallo Leute!

Hab da mal wieder eine Herausforderung!

Ich suche nach einer möglichkeit, wie man verschiedene TextBoxen prüfen kann ob sie gefüllt sind.
In meiner UF sind 32 TextBoxen.
Die TextBoxen 1-8 und 17-24 sind gesperrt, in den anderen sollen Werte eingetragen werden.
Beim Start wird die UF Warterst aufgerufen, bei Click auf Button "Neu erstellen"(CmdNeuerst) werden abfragen gemacht.
Bitte beim testen alle mit Nein bestätigen.
Man kann jetzt in den TextBoxen 25-27 Werte eingeben, sind die werte richtig werden die Boxen Weiß.
Bei der Textbox 28 muss ein DblClick gemacht werden und dann wird das Datum eingetragen.

Sind die TextBoxen 25-28 gefüllt und der hintergrund weiß, soll der CommandButton "CmdWarterst" in der Uf eingeblendet werden.

Habe einige möglichkeiten im Netz gefunden, ABER man betätig immer einen CommandButton zum Start.

Ist dies auch anders möglich, so wie ich es beschrieben habe?


Angehängte Dateien
.xlsm   TextBox.xlsm (Größe: 401,72 KB / Downloads: 13)
mfg
Michael
:98:

WIN 10  Office 2019
Top
#2
Hallo,

Du kannst für jede TextBox beim Change die Eingabe prüfen
Code:
Private Sub TextBox1_Change()
  If Me.Textbox1.Text = "abc" Then
    Hintergrund weiß (und enable = false?)
    tbopruefen
  else
    Hintergrund normal (wird nur ohne Enable gebraucht)
    tbopruefen
  end if
End Sub

Falls nach korrekter eingabe die Tbo gesperrt werden soll, dann noch das Enablen und dann brauchst Du auch den else-zweig nicht.

Wenn noch andere TextBoxen für weitere codes benötigt werden, prüfst Du die auch noch. Das könntest Du in ein Makro auslagern damit Du es nicht x mal programmieren musst

Function tboPruefen() as boolean
... 'Prüfe x Textboxen
End Function
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo Andre!

Danke für deine Rückmeldung.

Mit dem Change habe ich ja schon im Code, prüfe damit die anzahl. Stimmt diese wird die TextBox im Hintergrund weiß, zuviel eingetragen
wird sie erst Rot und dann wird der Inhalt gelöscht, Hintergrund wieder gelb. Der eintrag muss wiederholt werden.
Habe das auch für die TextBoxen so angelegt.
Nur wie bekomme ich das hin?

Zitat:Sind die TextBoxen 25-28 gefüllt und der hintergrund weiß, soll der CommandButton "CmdWarterst" in der Uf eingeblendet werden.

Das verstehe ich nicht ganz wie das gemeint hast!

Ich lege also in einem Modul eine Funktion an.
Zitat:Function tboPruefen() as boolean
... 'Prüfe x Textboxen
End Function
Ist der Wert richtig in der TextBox springe ich in diese Funktion?
Nur was muss in der Funktion stehen, damit die verschiedenen TextBoxen geprüft werden und dann wenn alle gefüllt sind mir der
CommandButton in der UF angezeigt wird Huh

Im moment stehe ich im Wald und sehe die Bäume nicht!
mfg
Michael
:98:

WIN 10  Office 2019
Top
#4
Hallöchen,
Mit der 25 bis 28 hattest Du ja geschrieben, da soll der Command Button eingeblendet werden.Die Funktion brauchst Du, wenn die Textboxen erst dann weiß werden sollen wenn alle Einträge ok sind.Deine Beschreibung kann man ja so und so ausleben. (Boxen 25 bis 27).
Wenn die unabhängig gefärbt werden, kann es auch ohne gehen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Hallo!

Ich dachte die Funktion ist für das einblenden und überprüfen ob einträge in den TextBoxen sind da.
Habe das im Netz gefunden und würde es gerne für einen Test in VBA nutzen.

Zitat:VB.NET-Quellcode
  1. For Each tb In {TextBox1, TextBox2, ...} 'hier alle Textboxen reinschreiben, die du prüfen willst
  2. If String.IsNullOrEmpty(tb.Text) Then tb.Text = "-----"
  3. Next
Habe es umgeschrieben und bekomme Fehler
erwarte Variable
Code:
Function tboPruefen2() As Boolean
Dim tb As Control
For Each tb In (TextBox1, TextBox2) 'hier alle Textboxen reinschreiben, die du prüfen willst
If String.IsNullOrEmpty(tb.Text) Then tb.Text = "-----"
Next
End Function
Wie schreibe ich den VB.Net Code so um das er in VBA geht?
Wenn der Code Funzt glaube habe ich die Lösung!
mfg
Michael
:98:

WIN 10  Office 2019
Top
#6
So als Tipp würde ich mal hier einen Blick drauf schauen.
Zu Deiner letzen Frage
Code:
Function tboPruefen2() As Boolean

Dim TBs  As New Collection
Dim tb As MSForms.TextBox
   
   TBs.Add TextBox1
   TBs.Add TextBox2
   TBs.Add TextBox3
' Alle die du brauchst
   
For Each tb In TBs
   If Len(tb.Text) = 0 Then
       Debug.Print "Here you need to add code on your own"
   End If
Next

End Function
Top
#7
Hallo!

Danke für die Rückmeldung!

Habe den Code eingebaut, doch leider gibt es wieder einen Fehler!
Code:
Function tboPruefen2() As Boolean

Dim TBs  As New Collection
Dim tb As MSForms.TextBox
 
  TBs.Add TextBox25
  TBs.Add TextBox26
  TBs.Add TextBox27
' Alle die du brauchst
 
For Each tb In TBs
  If Len(tb.Text) = 0 Then
     MsgBox " Es wurden nicht alle Textfelder ausgefüllt.!", 48
  End If
Next

End Function
Bleibt gleich dort stehen.
Variable nicht defeniert "TextBox25"

Zitat:
Code:
  TBs.Add TextBox25


Ansonsten kommen wir der sache näher!
mfg
Michael
:98:

WIN 10  Office 2019
Top
#8
Der Code is wo? Im Klassenmodul der Userform??
Gibt es eine Textbox mit dem Namen Textbox25 auf der userform?

Wenn Dir nicht klar ist was da passiert, empfehle ich zunächst 
Collections
Userforms
Top
#9
Hallo,

das würde eigentlich darauf hindeuten, das es eine TextBox 25 nicht gibt. Aber hänge trotzdem mal ein Value an die Textbox

Code:
TBs.Add TextBox25.Value
Gruß Stefan
Win 10 / Office 2016
Top
#10
Hallo!

1. Der Code ist in einen Modul
2. Ja es gibt die TextBoxen auf der UF Warterst

Ich hoffe du oder ein anderer kann weiter helfen.

Im anhang die Datei. Der Code ist im Module 1 als Funktion


Angehängte Dateien
.xlsm   TextBox.xlsm (Größe: 420,85 KB / Downloads: 9)
mfg
Michael
:98:

WIN 10  Office 2019
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste