Vba Lus in een Lus

Status
Niet open voor verdere reacties.

heetheid

Gebruiker
Lid geworden
13 jan 2012
Berichten
14
Dag Leden
voor degene onder jullie die graag raadsel oplossen in vba ben ik jullie vragen bron ^^

okay weer een nieuw probleem waar ik niet uit kan na vele pogingen

dit is de bedoeling :

het programma moet het gebruiker tekens een waarde vragen en die dan vergelijken of het
1. Binnen de grenzen ligt (Min en Max ) en 2. of het wel of geen Integer is.

enkel wanneer hij binnen de grenzen ligt en een integer is mag hij de ingegeven waarde afdrukken.

let op !!
de grenzen zijn dynamisch en worden bepaald door een for lus.
waarbij de Min -100 tot -400 en de Max 100 tot 400

Het programma mag de gebruiken maar 4 keer vragen om een waarde in te geven
met telkens de grenzen

-100 tot 100
-200 tot 200
-300 tot 300
-400 tot 400

het programma moet na elke grens (wanneer voldoet aan de 2 voorwaarden ) het resultaat weergeven.



dit is wat ik dacht (het is een heel boterham dus neem u tijd in het bekijken :

Code:
Sub Oef5_LimietTest()

    Dim IntA As Integer
    Dim IntB As Integer
    Dim intC As Integer
    

     
    For IntB = 100 To 400 Step 100
    
       For intC = -100 To -400 Step -100
         IntA = IntegerMinMax(intC, IntB)
         Call DrukWaardeAf(IntA, intC, IntB)
    
        Next intC
    Next IntB
    
   
   
    
End Sub

Function IntegerMinMax(Min As Integer, Max As Integer) As Integer    'geef een integer terug

    Dim Intgetal    As Integer
    Dim Dblgetal    As Double
    Dim Stra        As String
    Dim BlnTest     As Boolean
    
    Dim answer      As VbMsgBoxResult
 
    BlnTest = True
   
    Do While BlnTest = True
    
    Stra = InputBox("geef een getal in aub ")
                                                        
                                                        
    
       If IsNumeric(Stra) Then                                        'kijken of het wel een cijfer is
            Dblgetal = CDbl(Stra)
        
            If Dblgetal > Min And Dblgetal < Max Then           ' bereik is nu die van IntB (ookwel Max hier genoemd)
               Intgetal = CInt(Dblgetal)
            
                If Intgetal = Dblgetal Then
                    
                   ' hoewel het normaal lijkt mag je hier nog geen waarde teruggeven
     BlnTest = False
     
                 Else
                    answer = MsgBox("(" & CStr(Dblgetal) & ")" & " Bevat Komma ", vbOKOnly, " Error!!  Komma (Getal) ")
                End If
                
            Else
                answer = MsgBox("(" & CStr(Dblgetal) & ")" & "<" & CStr(Min) & CStr(Max), vbOKOnly, " ERROR !! Lengte Error ")
            End If
       Else
         answer = MsgBox("(" & Stra & ")" & " Is toch duidelijk GEEN getal  ", vbOKOnly, " ERROR !!GEEN GETAL  ")
       End If
       
    Loop

    IntegerMax = Intgetal



End Function

Sub DrukWaardeAf(getal As Integer, Min As Integer, Max As Integer)

    Dim answer As VbMsgBoxResult

    answer = MsgBox("(" & CStr(getal) & ")" & " Is een Integer en WEL ligt tussen " & CStr(Min) & " en " & CStr(Max), vbOKOnly, " Integer Getal ")

End Sub

Wanneer ik deze programma run

Krijg ik deze resultaten
- het controle of het een integer is verloop normaal

- ik word 8 keer gevraag om een waarde in te geven ipv 4

dus weet iemand hoe ik ervoor zorg dat hij mij maar 4 keer vraag om iets in te geven met telkens de grenzen die hij moet controleren (zie grenzen) ?


ik hoop dat dit duidelijker is ..
sorry voor mijn taal ( Mijn moedertaal is Engels dusja )

groetjes en alvast bedankt
 
Laatst bewerkt:
Nee, is niet normaal, het zou 16x moeten zijn :)

Code:
100, -100
100, -200
100, -300
100, -400

200, -100
200, -200
200, -300
200, -400

300, -100
300, -200
300, -300
300, -400

400, -100
400, -200
400, -300
400, -400
 
Kun je svp je bericht nog eens doorlezen en er gewoon, correct Nederlands van maken ? Wees in het Nederlands svp net zo nauwkeurig als je probeert te zijn in VBA.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan