• 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 verplicht getal groter dan 0 invullen

Status
Niet open voor verdere reacties.

carloschouw

Gebruiker
Lid geworden
15 jun 2015
Berichten
225
Goedemiddag!

Wie zou mij kunnen helpen met het verplicht invullen van een waarde groter dan 0 in een userform cel?

Voor algemene validaties (verplicht in te vullen velden) gebruik ik deze code (slechts het deel van de code waar het om gaat heb ik toegevoegd in het voorbeeld):

Code:
Sub GegevensOpslaan()

Dim iRow As Long
Dim ws As Worksheet
Dim lrow As Long
Dim lCount As Long
Set ws = Worksheets("Blad1")

If Trim(Me.TextBox1.Value) = "" Then
 Me.TextBox1.SetFocus
 MsgBox "Getal groter dan 0 invullen", vbOKOnly + vbInformation, "Getal invoeren"
         StayOpen = True
 Exit Sub
  End If

Wanneer een tekstbox leeg is werkt het allemaal prima. Maar hoe kan ik ervoor zorgen dat er gecontroleerd wordt dat het getal groter moet zijn dan 0?

Ik dacht zoeits als:

Code:
  If Trim(Me.TextBox1.Value) = "" And _
     Trim(Me.TextBox1.Value) >= 1 Then
  MsgBox "Getal groter dan 0 invullen", vbOKOnly + vbInformation, "Getal invoeren"
         StayOpen = True
 Exit Sub
  End If

Maar dat werkt goed.

Iemand een idee misschien?
 
Ik zou de controle doen bij het verlaten van de TextBox:
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    On Local Error Resume Next
    If Int(TextBox1.Text) = 0 Then
        Cancel = True
        MsgBox "Getal groter dan 0 invullen", vbOKOnly + vbInformation, "Getal invoeren"
        TextBox1.SetFocus
    End If
End Sub
 
Gebruik een combobox met geldige getallen.
 
@edmoor,
Hoe kan ik dit inrichten voor meerdere verplicht in te vullen textboxen? Moet ik dan voor iedere textbox een private sub textbox opstellen?

@snb,
Dat gaat helaas niet. De getallen zijn allemaal anders, geen standaard selectiewaarde is mogelijk. Het kan n.l. 1 zijn maar ook 4599 b.v.
 
Ik ben getriggerd door de = 0 codering van edmoor en heb de code aangepast van AND <=1 naar Or = 0 en het werkt nu prima.

Code:
  If Trim(Me.TextBox1.Value) = "" Or Trim(Me.TextBox1.Value) = 0 Then
  MsgBox "Getal groter dan 0 invullen", vbOKOnly + vbInformation, "Getal invoeren"
         StayOpen = True
 Exit Sub
  End If
 
Dat moet je dan wel weer per TextBox doen op die manier.
 
Dan had je vraag aan mij in #4 dus geen zin.
 
Moet er natuurlijk niet per abuis een letter ingevoerd worden.
 
Deels, begreep ik volgens mij niet zo goed. Ik dacht dat ik voor iedere textbox validatie deze methode zou moeten gaan gebruiken. Dan had ik eventjes wat werk te verzetten, zijn er n.l. redelijk wat :) De validatie werkt n.l. allemaal via een commandbutton dus zat een beetje in die flow te denken, vandaar.
 
Wat ik al zei, als je 100 TextBoxes hebt waarvoor diezelfde controle nodig is, dan kan je daar een klassenmodule voor gebruiken en heb je maar 2 Subs nodig.
 
Code:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode < 48 Or KeyCode > 57 Then TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan