VBA in Excel: Testen op tekst in een variabele

Status
Niet open voor verdere reacties.

h.van.bouwel

Gebruiker
Lid geworden
20 jun 2004
Berichten
51
De variable "intweekrapport" is steeds een getal dat tussen 1 en 10 ligt. Als je in de prompt een tekst in geeft krijg je "Error 13". Hoe kan ik voor deze "if-functie" eenvoudig controleren of er een tekst is ingevoegd?




If intweekrapport > 10 Then
strError1 = "U hebt een getal ingegeven dat groter is dan 10" & Chr(10) & Chr(13)
strError1 = strError1 & "Er zijn maar 10 traingingsweken" & Chr(10) & Chr(13)
strError1 = strError1 & "Geef het correct weekcijfer in."
intError1 = MsgBox(strError1, 0, strErrorTitel)
strtitel = "Weekrapport"
strprompt = "Geef de trainingsweek in:" & Chr(10) & Chr(13)
strprompt = strprompt & "U hoeft enkel het getal in te geven." & Chr(10) & Chr(13)
strprompt = strprompt & "Geef een getal tussen 1 & 10"
intweekrapport = InputBox(strprompt, strtitel)
End If
 
Je kunt een string-waarde in een integer-waarde(een numerieke waarde)
omzetten door de VB functie
Val te gebruiken.

In dit geval is dit niet eens nodig.

Wat je nu hoeft te doen is alleen de code
Code:
intweekrapport = InputBox(strprompt, strtitel)
helemaal bovenaaan te plaatsen.

Je hele listing hoort er dan zo uit te zien:

Code:
intweekrapport = InputBox(strprompt, strtitel) 

If intweekrapport > 10 Then 
   strError1 = "U hebt een getal ingegeven dat groter is dan 10" &    Chr(10) & Chr(13) 
   strError1 = strError1 & "Er zijn maar 10 traingingsweken" & Chr(10)    & Chr(13) 
   strError1 = strError1 & "Geef het correct weekcijfer in." 
   intError1 = MsgBox(strError1, 0, strErrorTitel) 
   strtitel = "Weekrapport" 
   strprompt = "Geef de trainingsweek in:" & Chr(10) & Chr(13) 
   strprompt = strprompt & "U hoeft enkel het getal in te geven." &       Chr(10) & Chr(13) 
   strprompt = strprompt & "Geef een getal tussen 1 & 10" 
End If
Dennis.
 
ah, sorry. Je had het ook over het controleren v.e. eventueel ingevoerde tekst, i.p.v. een getal.

Copieer onderstaande code. Ik zeg opzettelijk "copieer", omdat er een uderscore(_)-teken in de code zit, dit is gewoon nodig.

Code:
If (Val(Left(intweekrapport, 1)) > 0 And Len(intweekrapport) > 1) Or _
(Val(intweekrapport) = 0) Then
  MsgBox "typ geen tekst aub, maar een getal tussen 1 en 10."
  Exit Sub
End If

Hoop, dat je wel weet waar de code in je listing tussen te voegen.

Dennis.
 
Hierbij het algehele code opnieuw:

Code:
intweekrapport = InputBox(strprompt, strtitel)

If (Val(Left(intweekrapport, 1)) > 0 And Len(intweekrapport) > 2) Or _
   (Val(intweekrapport) = 0) Then
   MsgBox "typ geen tekst aub, maar een getal tussen 1 en 10."
   Exit Sub
   Else
   If intweekrapport > 10 Then
      strError1 = "U hebt een getal ingegeven dat groter is dan 10" &       Chr(10) & Chr(13)
      strError1 = strError1 & "Er zijn maar 10 traingingsweken" &       Chr(10) & Chr(13)
      strError1 = strError1 & "Geef het correct weekcijfer in."
      intError1 = MsgBox(strError1, 0, strErrorTitel)
      strtitel = "Weekrapport"
      strprompt = "Geef de trainingsweek in:" & Chr(10) & Chr(13)
      strprompt = strprompt & "U hoeft enkel het getal in te geven." &       Chr(10) & Chr(13)
      strprompt = strprompt & "Geef een getal tussen 1 & 10"
      intweekrapport = InputBox(strprompt, strtitel)
  End If
End If
Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan