Verplicht veld

Status
Niet open voor verdere reacties.

smitty

Gebruiker
Lid geworden
18 okt 2000
Berichten
155
Hoi,
Kan iemand mij zeggen of het mogelijk is om een tekstveld zodanig in te stellen is dat invullen hiervan verplicht is??

Groetjes,
Smitty
 
Ja, dat kan makkelijk. De vraag is alleen wanneer je programma dat moet checken ..

Bij het drukken op een commandbutton of bij de lostFocus event van een textbox. Dat is aan je jou ..

Je checkt gewoon of ze leeg zijn. En als dat zo is display je een message Box en anders ga je door met je programma ..
 
Het progje moet checken na lostfocus. Ik heb het inderdaad gemaakt met een msgbox als de waarde leeg is. Maar als een gebruiker gewoon op ok klikt staat de cursos in het volgende tekstvak. Eigenlijk moet de cursor in het lege tekstvak blijven staan. Ik heb het geprobeerd met setfocus maar dat werkt niet??
 
dan zou ik graag je code willen zien, want bij mij werkt dat gewoon ...
 
code

Hoi,
hier is de code van naamvoegtoe.txt

Private Sub naamvoegtoe_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If naamvoegtoe.Text = "" Then
response = MsgBox("U dient een naam in te vullen", 0, "Let op")
End If
If reponse = "0" Then
naamvoegtoe.SetFocus
End If
End Sub
Als men op ok klikt zou er dus teruggesprongen moet worden naar naamvoegtoe.txt
 
je maakt gebruik van vba !!

dan moet je even tab index en selectionstart instellen ..

overigens kan bij VBA het wel vaker problemen opleveren als 1 van je textboxen of comboboxen naar een andere form verwijst ...

Je zal anders het geheel moeten zippen en hier posten, want het is moeilijk te zien anders ...

Overigens is in visual basic de ok knop van de messagebox een 1 en geen 0 ! Waarom doe je niet gewoon:

Private Sub naamvoegtoe_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If naamvoegtoe.Text = "" Then
response = MsgBox("U dient een naam in te vullen", 0, "Let op")
naamvoegtoe.SetFocus
End If
End Sub
 
code

De code werkt niet. De msgbox verschijnt wel, mar de cursor gaat gewoon naar het volgende invulveld.
Ik heb het sjabloon toegevoegd tesamen met een txt bestand waar adressen in staan
 

Bijlagen

Snap eigenlijk niet waarom de focus niet gewoon op die textboxen komt. De code is gewoon goed ...

Soms wil het verwijderen van de textboxen en opnieuw aanmaken helpen. dat heb ik nog niet geprobeerd ...

Maar heb eigenlijk een betere oplossing. Vind het persoonlijk nogal irritant als de messageboxen komen en de focus meteen weer op die textbox komt. Op deze manier kan je namelijk nooit als je de naam textbox hebt geselecteerd naar de rekeningnummer textbox springen (tenzij je wat invult).

Of misschien wil je achteraf geen nieuwe toevoegen ...
Is allemaal niet heel ernstig, maar het onnodig opkomen van de messageboxen vind ik persoonlijk irritant.

Ik zou willen voorstellen om alle

Private Sub crediteurvoegtoe_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub

te deleten. Dus alle blabla_Exit(ByVal Cancel ......)

en 1 procedure te veranderen in :

Code:
Private Sub cmdvoegtoe_Click()

Open "C:\WINDOWS\Desktop\vb\test\adrescrediteur.txt" For Append As #1
Dim ctl As Control
Dim IngevuldKlaar As Boolean

IngevuldKlaar = True

For Each ctl In Controls
        If TypeOf ctl Is TextBox Then
            If Trim(ctl.Text) = "" And (ctl.Name = "naamvoegtoe" Or ctl.Name = "rekeningvoegtoe" Or ctl.Name = "crediteurvoegtoe") Then
                MsgBox "U dient een naam, rekening en crediteurnummer in te vullen!"
                IngevuldKlaar = False
                ctl.SetFocus
                Exit For
            End If
        End If
Next ctl

If IngevuldKlaar = True Then
    If naamvoegtoe.Text = "" Then naamvoegtoe.Text = "niets ingevuld"
    If crediteurvoegtoe.Text = "" Then crediteurvoegtoe.Text = "niets ingevuld"
    If rekeningvoegtoe.Text = "" Then rekeningvoegtoe.Text = "niets ingevuld"
    Write #1, naamvoegtoe.Text, crediteurvoegtoe.Text, rekeningvoegtoe.Text
    Lstadres.AddItem naamvoegtoe.Text
    naamvoegtoe.Visible = False
    crediteurvoegtoe.Visible = False
    rekeningvoegtoe.Visible = False
    lblnaam.Visible = False
    lblrekening.Visible = False
    lblcrediteur.Visible = False
    cmdvoegtoe.Visible = False
    chkvoegtoe.Value = False
End If


Close #1

    
End Sub

Hij springt altijd naar de goede textbox nu. Als je crediteurnummer niet invuld en de andere twee wel en de focus staat op de derde en je drukt de commandbutton in dan gaat de focus naar de goede textbox. Heb je meerdere niet ingevuld dan gaat de focus naar de bovenste van de twee of drie niet ingevulde .....
 
Laatst bewerkt:
volgens mij is dit idd niet eens mogelijk per TextBox in Visual Basic for Applications:

een TextBox van 'gewoon' Visual Basic heeft voor wat jij wilt het Validate event, en voor soortgelijke bewerkingen LostFocus.

maar in VBA ben je afhankelijk van Exit en die stuurt de focus na een op zich succesvol 'SetFocus' of 'Cancel = True' helemaal aan het einde van de code helaas alsnog door naar je volgende TextBox.

denk dat je 't beste zoals vaat voorstelt alles in één keer kunt controleren. andere mogelijkheid is de focus aan de gebruiker overlaten. allebei niet ideaal, maar da's bill gates z'n fout en niet die van jou! ;)
 
Labels

Hoi,

Wat ook nog een mogelijkheid is, is dat je gebruik gaat maken van LABELS met een GOTO-sprong.

Het is weliswaar geen keurige oplossing en ik weet ook niet of VBA met labels overweg kan, maar dit zou OOK kunnen werken ...

Gr.,
R. Bol
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan