Gå til innhold

Sjekke at innholde i tesktboks er tall


Anbefalte innlegg

Videoannonse
Annonse

Du kan bruke IsNumeric for å sjekke om en streng inneholder kun bokstaver. Den brukes omtrent slik:

 

Dim strTest As String

strTest = "65"

If IsNumeric(strTest) Then
   MsgBox "strTest inneholder kun tall"
Else
   MsgBox "strTest inneholder både bokstaver og tall"
End If

Lenke til kommentar

Vel, støtten for Regular Expressions er kanskje ikke så stor i VB, men du kan faktisk legge dem til ved å laste ned Microsoft Windows Script 5.6 pakken. Etter du har gjort dette, eller hvis du allerede har VBScript pakken installert, kan du referere Microsoft VBScript Regular Expressions 5.6 til prosjektet ditt.

 

Völa, du har Regular Expressions.

Lenke til kommentar
då kan du skrive if not isnumeric(strTest) ...

Ved å skrive

not isnumeric(strTest)

vil jeg jo bare sjekke om det er en string.

Siden variabelen er en string, så vil testen da ikke klare å skille om jeg skriver følgende:

 

strTest = "tekst"

og om jeg skriver

strTest = "tekst5"

 

Den vil påstå at begge er string, og vil påstå at det er tekst.

Det jeg i så fall må gjøre er å bryte ned innformateringen, slik at jeg sjekker på et og et tegn bortover til jeg har nådd siste tegnet.

 

Skulle vel bli løst med en teller som forteller hvor jeg er i teksten, og en variabel jeg leser inn hvert tegn inn i for så å sjekke om det er tekst eller ikke tekst.

Dette må gå i en loop til jeg har nådd lengden av teksten.

 

Private Sub cmdTekstSjekk_Click()
Dim teller, lengde As Integer
Dim tegnet As String
teller = 1
lengde = Len(strInnTekstText)
Do Until teller = lengde
tegnet = Mid(strInnTekst.Text, teller, 1)
If IsNumeric(tegnet) Then
MsgBox "Teksten inneholder tall, avbryter operasjon"
Exit Sub
End If
teller = teller + 1
Loop
MsgBox "Teksten inneholder bare tekst"
End Sub

 

Dette mener jeg skal fungere. :yes:

Lenke til kommentar
  • 3 uker senere...

Her er eksempel på fortløpende validering av det du skriver inn i TextBoxen

 

Private Sub txtBoks_KeyPress(KeyAscii As Integer)

Dim sTegn As String

sTegn = "0123456789"

'Eller skriv inn de tegn som skal brukest

'Du kan da bruke UCase eller LCase

'sTegn = "abc"

 

If KeyAscii > 13 Then

If InStr(sTegn, Chr(KeyAscii)) = 0 Then

KeyAscii = 0

End If

End If

End Sub

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...