uitgebreid invoer mask

Status
Niet open voor verdere reacties.

manueld

Gebruiker
Lid geworden
12 feb 2012
Berichten
216
ik heb een text vak waar een ivoer in gegeven word. afhankelijk van de waarde doet mijn vba script een aktie. dit werkt goed behalve dat als hij een invoer kragt die niet is zoals het moet zijn dan geeft hij elders diverse fouten en stopt hij met lopen. gevolg dat ik de hele access database moet sluiten en herstarten om alle variabelen en voorwaarden weer goed te hebben. ik wil dan ook dat hij voordat hij verder gaat lopen eerst kijkt of de input voldoet en zo nee dat hij de ingevulde gegevens wist en de focus weer op het textvak zet voor een nieuwe invoer. eventueel met een msgbox dat de invoer fout is
iemand een idee?
de geldige waarden zijn of een getal zonder komma's of reason1, reason2......reason15 of lastorder
 
Laatst bewerkt:
inmiddels zelf opgelost. misschien kan het beter. ik staa open voor sugesties

Code:
Private Sub txtSales_Order_Number_AfterUpdate()


'check input

Dim num As Boolean
num = False
If IsNumeric(txtSales_Order_Number) Then
num = True
 
 End If
 If txtSales_Order_Number = "Reason1" Then
 num = True
ElseIf txtSales_Order_Number = "Reason2" Then
num = True
ElseIf txtSales_Order_Number = "Reason3" Then num = True
ElseIf txtSales_Order_Number = "Reason4" Then num = True
ElseIf txtSales_Order_Number = "Reason5" Then num = True
ElseIf txtSales_Order_Number = "Reason6" Then num = True
ElseIf txtSales_Order_Number = "Reason7" Then num = True
ElseIf txtSales_Order_Number = "Reason8" Then num = True
ElseIf txtSales_Order_Number = "Reason9" Then num = True
ElseIf txtSales_Order_Number = "Reason10" Then num = True
ElseIf txtSales_Order_Number = "Reason11" Then num = True
ElseIf txtSales_Order_Number = "Reason12" Then num = True
ElseIf txtSales_Order_Number = "Reason13" Then num = True
ElseIf txtSales_Order_Number = "Reason14" Then num = True
ElseIf txtSales_Order_Number = "Reason15" Then num = True
ElseIf txtSales_Order_Number = "LastOrder" Then num = True
 End If
 

If num = False Then
MsgBox "Incorect Input"

txtSales_Order_Number = ""
Exit Sub

End If
num = False
 
Het kan in ieder geval korter en overzichtelijker :). Twee varianten:

Code:
Private Sub txtSales_Order_Number_AfterUpdate()
Dim num As Boolean
Dim i As Integer

    If IsNumeric(txtSales_Order_Number) Then
        num = True
        Exit Sub
    End If
    If txtSales_Order_Number = "LastOrder" Then
        num = True
        Exit Sub
    End If
    
    For i = 1 To 15
        If txtSales_Order_Number = "Reason" & i Then
            num = True
            Exit Sub
        End If
    Next i

End Sub

Of met gebruik van een functie. De laatste variant heeft als voordeel dat je 'm vaker kunt aanroepen.
Code:
Private Sub txtSales_Order_Number_AfterUpdate()
    If chkOrderNumber("txtSales_Order_Number") = False Then
        MsgBox "Incorect Input"
        txtSales_Order_Number = ""
    End If
End Sub

Code:
Function chkOrderNumber(fld As String) As Boolean
    If IsNumeric(fld) Then 
        chkOrderNumber = True
        Exit Function
    End If
    If fld = "LastOrder" Then
        num = True
        Exit Function
    End If
    For i = 1 To 15
        If fld = "Reason" & i Then
            chkOrderNumber = True
            Exit Sub
        End If
    Next i
End Function
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan