• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

userform VBA

Status
Niet open voor verdere reacties.

nobody11

Gebruiker
Lid geworden
20 dec 2007
Berichten
552
hallo iedereen,

ik heb een userform gemaakt, en ik zou nu graag willen instellen dat als de user op "ok" klikt, er eerst wordt gekeken of er bepaalde velden ingevuld zijn

ik heb 4 textboxen, waarin enkel positive getallen mogen komen..

ik heb ook 2 checkboxen, waar telkens 1 iets moet geselecteerd worden voor dat kan worden verdergegaan..

hoe kan ik dit best doen die "check",en als er aan een voorwaarde niet voldaan is, moet de userform getoond blijven...

bedankt!!
 
ik heb deze code al gevconden op ozgrid

Code:
If TextBox1 = vbNullString Then Exit Sub

    	If Not IsNumeric(TextBox1) Then

 			MsgBox "Sorry, numbers only"

     		TextBox1 = vbNullString

    	End If

hier wil ik graag nog aan toevoegen dat het getal niet alleen numerisch moet zijn, maaar ook positief.. iemand enig idee?

en verder rest mij dan ngo de vraag hoe ik kan checken of alle checkbox'en zijn ingevuld voor men verder gaat..
 
Code:
If TextBox1 = vbNullString Then Exit Sub
If Not IsNumeric(TextBox1) Or TextBox1.Value <= 0 Then
    MsgBox "Sorry, positive numbers only"
    TextBox1 = vbNullString
End If

Code:
For Each Ctl In UserForm1.Controls
        If TypeOf Ctl Is MSForms.TextBox Or TypeOf Ctl Is MSForms.ComboBox Then
            If Ctl.Text = "" Then
                MsgBox "Niet alle velden zijn ingevuld"
                Exit Sub
            End If
        End If
    Next
 
Laatst bewerkt:
Code:
If TextBox1 = vbNullString Then Exit Sub
If Not IsNumeric(TextBox1) Or TextBox1.Value <= 0 Then
    MsgBox "Sorry, positive numbers only"
    TextBox1 = vbNullString
End If
tx

,nu zit ik met volgende probleem:

als ik zegt bv dat de waarde groter moet zijn dan 20 in de code, maar ik tijp dan bv een 2 (om 22 te vormen bv), dan krijg ik de error al.. hoe kan ik dit oplossen?
 
Selecteer een ander event ipv _Change
 
Selecteer een ander event ipv _Change

ja, had ik geprobeerd, maar het probleem is dan dat als je een negatief getal invult, en dan met "tab" naar het volgende gaat, dat er dan geen error komt terwijl er een zou moeten komen (negatief getal)..

hoe kan ik eventueel de tabs uitschakelen? of kan ik de tabs ingeschakeld laten en dit probleem voorkomen?
 
ja, had ik geprobeerd
en WELK event heb je dan gekozen? Als je kiest voor het Before_Update event gaat het naar mijn idee wel goed...
Code:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    
    With TextBox1
        If .Value < 0 Then
            MsgBox "kleiner dan nul (" & .Value & ") mag niet!"
            .Value = ""
        End If
    End With
    
End Sub

Goret, Leo
 
en WELK event heb je dan gekozen? Als je kiest voor het Before_Update event gaat het naar mijn idee wel goed...
Code:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    
    With TextBox1
        If .Value < 0 Then
            MsgBox "kleiner dan nul (" & .Value & ") mag niet!"
            .Value = ""
        End If
    End With
    
End Sub

Goret, Leo

super, test ik zo even! :)
 
1. val gebruikers niet lastig met waarschuwingen.
2. gebruik geen tekstvak voor getallen (waarom zou het anders een tekstvak heten ?)
3. gebruik spinbuttons voor getallen: je kunt dan zelf minimum en maximum vastleggen, zodat een gebruiker niets fout kan doen en er
ook geen waarschuwingsbord nodig is (onoodige geheugengebruik)
4, indien gewesnt kun je ok een combobox als dropdownlist gebruiken met vooraf een uitputtende lijst van geldige getalen. Ook dan geen controle en waarschuwingsbord nodig.

controle op zichtbaarheid van vervolgknop met 4 spinbuttons:
Code:
knop_vervolg.visible= instr(spin1.value &"|"& spin2.value & "|" & spin3.value &"|" & spin4.value,"||")=0

controle op 2 vinkvakken (die aangevinkt moeten zijn)
Code:
knop_vervolg.visible=vink1.value*vink2.value =1

gecombineerd

Code:
knop_vervolg.visible=vink1.value*vink2.value & instr(spin1.value &"|"& spin2.value & "|" & spin3.value &"|" & spin4.value,"||")=10
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan