• 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.

Invoer controleren

Status
Niet open voor verdere reacties.

apikills

Gebruiker
Lid geworden
14 jul 2005
Berichten
160
Oke Allemaal,

ik heb met VBA een userform gemaakt in Excel, met daarin een Textbox. In de textbox moet een waarde ingevoerd worden die een tijdsopmaak heeft. Hoe kan ik het eenvoudigst controleren dat de ingevoerde waarde inderdaad een tijdswaarde heeft (dus bijv '12:00')?

Ik heb nu de volgende code geschreven:

Code:
Dim bErrors As Boolean, strTime As String, strMins As String, strHrs As String
Dim iLength As Integer, iHrs As Integer, iMins As Integer

bErrors = False

strTime = ufDataReplacement.TextBox2
iLength = Len(strTime)

If iLength = 4 Or iLength = 5 Then
    strMins = Right(strTime, 2)
    strHrs = Left(strTime, iLength - 3)
    If IsNumeric(strMins) And IsNumeric(strHrs) Then
        iHrs = CInt(strHrs)
        iMins = CInt(strMins)
        If iHrs < 0 Or iHrs > 24 Or iMins < 0 Or iMins > 59 Then
            bErrors = True
        End If
    Else
        bErrors = True
    End If
Else
    bErrors = True
End If

Apikills
 
Laatst bewerkt:
Dit heb ik gevonden maar zelf geen ervaring mee.


Code:
Private Sub UserForm_Initialize()
    TextBox1 = Format(Int(Val(TextBox1) / 100) & Right(TextBox20, 2), "0#:##")
End Sub


Als je dit start krijg je 00:00.

Pierre
 
Hoi Pierre,

bedankt voor de code. Het werkt deels. Bij invoer van een juiste tijd is het geen probleem, maar ik wil juist foutieve invoeren afvangen. Dus typefouten, ect.

Wellicht dat jij of iemand anders mij daar nog wat verder mee kan helpen.

Api
 
Dit werkt voor de tijd (alleen bij invoer van pure text zegt ie niks)
txbtijd = invoerveld

Code:
Private Sub txbTijd_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'TIJD INVOERVELD'

On Error Resume Next
    If txbTijd.Value = Format(txbTijd.Value, "HH MM") Then
        MsgBox "Onjuiste tijd, vul opnieuw in A.U.B.? (HH:MM)", vbCritical, Title:="Tijd"
        txbTijd.Value = vbNullString
        txbTijd.SetFocus
        Exit Sub
    End If
    
    txbTijd.Value = Format(txbTijd.Value, "HH:mm")
On Error GoTo 0

End Sub

Jarod
 
Nu wil het totaal

Deze moet het helemaal doen!

Code:
Private Sub txbTijd_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'TIJD INVOERVELD'

On Error Resume Next
    If txbTijd.Value <> Format(txbTijd.Value, "HH:MM") Or txbTijd.Value = Format(txbTijd.Value, "HH MM") Then
        MsgBox "Onjuiste tijd, vul opnieuw in A.U.B.? (HH:MM)", vbCritical, Title:="Tijd"
        txbTijd.Value = vbNullString
    Exit Sub

Else
    
    If txbTijd.Value = Format(txbTijd.Value, "HH:MM") Then
    
        txbTijd.Value = Format(txbTijd.Value, "HH:mm")
        txbTijd.Text = Format(txbTijd.Text, "HH:MM")
    End If
End If
On Error GoTo 0

End Sub

Jarod
 
Beste Jarod en jpvs,

bedankt voor jullie hulp. Ben zelf inmiddels een stuk verder gekomen. Ik gebruik nu het DateTimePicker-besturingselement om de invoer te controleren. Ik ben nu verzekerd van een goede en ook nog eens een duidelijke wijze van invoer.

Bedankt voor het meedenken en de geboden hulp:thumb:

Api
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan