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

Msgbox testen op inhoud met waarden

Status
Niet open voor verdere reacties.

stefano

Gebruiker
Lid geworden
22 mei 2004
Berichten
865
Ik wil een waarde invullen in een cel via een msgbox.

Deze waarde dient getoetst te worden: de waarde mag niet kleiner zijn dan de waarde in cel c10 en niet groter dan de waarde in cel D10.

De test geeft een foutmelding bij value(waarde), zie hieronder voor de code. ( compileerfout: Sub of Function is niet gedefiniëerd )

Kan/wil iemand me helpen aub?

dank,

Stefano

Code:
Sub test()

Dim waarde As Integer

    waarde = InputBox("Infobox", "Geef waarde in", "waarde")
    If value(waarde) < Range("C10") Or value(waarde) > Range("D10") Then
            MsgBox "De ingegeven waarde is niet correct!", vbCritical, "Fout!"
        Exit Sub
    Else
        With Sheets("blad1")
            .Range("b32").value = waarde
        End With
    End If
    
End Sub
 
Stefano, het mooie van VBA is - zéker als je netjes je variabelen declareert - dat je kan zien dat je foute functies of variabelen gebruikt. Een functie begint namelijk altijd met een hoofdletter. Zoals je kan zien in jouw procedure is dat niet het geval bij de door jou gebruikte niet in VBA bestaande functie "value". Maak er iets van Cint van als je de waarde van de inputbox moet converteren naar een getal.
 
Dank je wel voor tip en info!

Blijkbaar werkt dit niet wanneer ik decimalen ga gebruiken. komt wellicht door declaratie van de variabele als Integer, maar hoe declareer ik dan wel de variabele (Decimal?), wat zet ik dan ipv Cint?


Code:
Sub test()

Dim waarde As Integer

    waarde = InputBox("Infobox", "Geef waarde in", "waarde")
    If CInt(waarde) < Range("C10") Or CInt(waarde) > Range("D10") Then
            MsgBox "De ingegeven waarde is niet correct!", vbCritical, "Fout!"
        Exit Sub
    Else
        With Sheets("blad1")
            .Range("b32").value = waarde
        End With
    End If
    
End Sub
 
Laatst bewerkt:
Die CInt, Else en .Value heb je in dit geval niet nodig:
Code:
Sub test()
    Dim Waarde As Integer

    Waarde = InputBox("Infobox", "Geef waarde in", "waarde")
    If Waarde < Range("C10") Or Waarde > Range("D10") Then
        MsgBox "De ingegeven waarde is niet correct!", vbCritical, "Fout!"
        Exit Sub
    End If
    
    Sheets("blad1").Range("B32") = Waarde
End Sub
 
Laatst bewerkt:
In elk van de drie mogelijkheden verschijnt mijn getal als een integer. Ingeven van 14,5 geeft 14,0

Edmoor

Code:
Sub test()

Dim waarde As Integer

    waarde = InputBox("Infobox", "Geef waarde in", "waarde")
    If waarde < Range("C10") Or waarde > Range("D10") Then
            MsgBox "De ingegeven waarde is niet correct!", vbCritical, "Fout!"
        Exit Sub
    Else
        With Sheets("blad1")
            .Range("b32").value = waarde
        End With
    End If
    
End Sub

Dotchie

Code:
Sub test3()

Dim waarde As Integer

    waarde = InputBox("Infobox", "Geef waarde in", "waarde")
    If CDb1(waarde) < Range("C10") Or CCb1(waarde) > Range("D10") Then
            MsgBox "De ingegeven waarde is niet correct!", vbCritical, "Fout!"
        Exit Sub
    Else
        With Sheets("blad1")
            .Range("b32").value = waarde
        End With
    End If
    
End Sub
 
Als je cijfers achter de komma wilt gebruiken moet je natuurlijk niet Integer als datatype gebruiken voor de variabele Waarde maar Double.
 
Laatst bewerkt:
@Edmoor. Yup, daarom gaf ik ook de conversie met Cint aan. ;-)
 
Nee, CInt is een conversie van String naar Integer. Dan blijft het nog steeds een geheel getal.
 
Als je Waarde als Double declareert heb je die CDbl ook niet nodig en ook een conversie van Integer naar Double blijft een geheel getal, dus zonder cijfers achter de komma.
 
Laatst bewerkt:
Hiermee wordt ook de foutmelding afgevangen als je op annuleren drukt of op OK drukt als er niets is ingevuld.
Code:
Sub test()
Dim waarde As Double
On Error GoTo oops
waarde = InputBox("Infobox", "Geef waarde in", "waarde")
    If waarde < Range("C10") Or waarde > Range("D10") Then
    MsgBox "De ingegeven waarde is niet correct!", vbCritical, "Fout!"
        Exit Sub
    End If
    Sheets("blad1").Range("B32") = waarde
oops:
End Sub
 
Waarom gebruik je niet de ingebouwde data validatie van Excel ?
 
Omdat ik iemand ben die probeer ( met vba ) één en ander uit te proberen en vooral te automatiseren. Meeste van mijn taken zijn dagelijks tot wekelijks vernieuw na updates. Om (veel) tijd te besparen wil ik dat dan via macro's en dergelijke inbouwen zodat met één druk op de knop alle handelingen correct verlopen. Mogelijks is dit niet steeds de beste oplossing en ja het is met vallen en opstaan. Soms ook onduidelijk zoals ik het deze week nog vernomen heb. Ik heb ook totaal geen achtergrond van programmeren of één of andere computertaal. Mocht ik alles mogen overdoen, ik zou zeker die weg inslaan want ben er echt wel geïnteresseerd in ...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan