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

checken van de inhoud van een inputbox

Status
Niet open voor verdere reacties.

Masjimo

Gebruiker
Lid geworden
23 dec 2010
Berichten
165
Ik heb een inputbox voor het opvragen van een variabele, de VBA ziet er als volgt uit;

Code:
Dim a, r As Integer
Dim tmp As Integer

tmp = InputBox("De af te voeren hoeveelheid huurmaterieel bedraagt: (max" & Range("E" & r) & " " & Range("G" & r) & ")  ?")

If IsNull(tmp) Then
    myCheck = MsgBox("De ingoevoerde hoeveelheid moet een numeriek getal zijn!", vbOK)
    Exit Sub
Else

If IsNumeric(tmp) Then

If tmp = 0 Then
    myCheck = MsgBox("De opgegeven hoeveelheid is 0; voer de juiste hoeveelheid in of kies de juiste post om af te voeren!", vkOK)
    Exit Sub
Else

Ik wil de opgave van de variabele checken op <TEKST> en of de opgave <LEEG> is; had gedacht dit te doen met de functie ISNULL etc te doen, maar het probleem is wanneer de waarde van <tmp> wordt opgegeven en dit bv "veel" is er een foutmelding komt in verband met de declaratie van <tmp> als Integer.

Hoe kan ik dit het beste oplossen?? (Wil alle mogelijkheden voor foutmeldingen voorkomen!):shocked:
 
Haal het As Integer eens weg. tmp mag dan elke waarde bevatten. De rest van de code ondervangt het dan wel volgens mij.
 
De Inputbox levert altijd een string. Ik zou het zo doen:
Code:
Dim a, r As Integer
Dim tmp As String

    tmp = InputBox("De af te voeren hoeveelheid huurmaterieel bedraagt: (max" & Range("E" & r) & " " & Range("G" & r) & ")  ?")
    If tmp = "" Or tmp = "0" Then
        MyCheck = MsgBox("De opgegeven hoeveelheid is 0; voer de juiste hoeveelheid in of kies de juiste post om af te voeren!", vkOK)
    
    ElseIf Not IsNumeric(tmp) Then
        MyCheck = MsgBox("De ingoevoerde hoeveelheid moet een numeriek getal zijn!", vbOK)
    End If
 
Laatst bewerkt:
Wordt toch lastiger......

Die <tmp> moet een integer blijven, omdat hij elders in vergelijkingen ook gebruikt wordt; door nu de declaratie weg te laten of er een string van te maken gaat het verderop in de VBA toch fout.....

Is er een commando dat een niet-numerieke check kan uitvoeren; dus IsNotNumeric o.i.d.; als ik maar geen foutmelding krijg.....
 
Je kunt verderop in de VBA de tmp als volgt controleren:
Code:
If CInt(tmp) = Then

Of gebruik een andere variabele van het type Integer die je vult met variabele = Cint(tmp)
 
Laatst bewerkt:
Gebruik application.inputbox, daaraan kun je een type toepassen (1 staat voor 'getal').
Code:
tmp = Application.InputBox("De af te voeren hoeveelheid huurmaterieel bedraagt: (max" & Range("E" & r) & " " & Range("G" & r) & ")  ?", , , , , , , 1)
 
Da's een goeie, nooit geweten.
Bedankt :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan