Jeg ønsker en LOOP med en InputBox. Der kan være 0, 1 eller flere fejl i brugerens input. Der skal Loop'es, indtil der tastes korrekt. Skitse:
Do while ? Input (loop indtil fejlfri input): Betingelse1 (hvis fejl, loop tilbage til Input, ellers Tekstt="A" Betingelse2 (hvis fejl, loop tilbage til Input, ellers Tekstt="B" ... BetingelseN (hvis fejl, loop tilbage til Input, ellers Tekstt="N" (hvis fejlfrit gennemløb, kør resten af makroen) End While ?
Skal jeg bruge: Do While ? eller While do ? eller Select Case ? eller:
Dim Flag as Boolean Dim MyValue as String,Tekst as String Flag=True
Do While Flag=True MyValue=Inputbox("din tekst") Select Case MyValue Case "Betingelse" Tekst1="A" Flag=False Case "Betingelse" Tekst1="B" Flag=False End Select Loop
DoWhile skal blive ved med at spørge (via InputBox) om Betingelse1, indtil Betingelse1 er udfyldt korrekt, dernæst skal DoWhile blive ved med at spørge om Betingelse2, indtil Betingelse2 er opfyldt, osv. osv.
Men DEFAULT-værdien i Inputbox forbliver den samme, selvom jeg angiver en anden tekst før FLAG (bool) ?
Ved fejl i Betingelse1 skal InputBox vise Default-værdi 1, Ved fejl i Betingelse2 skal InputBox vise Default-værdi 2, osv. osv. -men det kan jeg ikke helt få til at virke ?
Public Sub cpr_Testinggg() ' Public Sub SelectCase_in_DoWhile_()
Dim Flag As Boolean Dim MyValue As Variant ' Variant, fordi indtasteren kan komme til at indtaste andet end cifre Dim Tekst_1 As Variant
Flag = True Tekst_1 = "init Tekst1"
'Test, om cpr er korrekt:
Do While Flag = True MyValue = InputBox(Tekst_1, "C P R", 1234567890)
Select Case MyValue
Case Is < 32 Tekst_1 = "DAG er ok, < 32" Flag = False
Case Is > 31 Tekst_1 = "fejl: DAG > 31" Flag = False
' her skal loop'es tilbage til inputbox, ' og Tekst_1 i inputbox skal blive til: "fejl: DAG > 31", ' men Tekst_1 i inputbox forbliver "init Tekst1" ???? ' Hvad gør jeg forkert ?
''''' Og senere i Sub'en: ' Hvis DAG < 32 og MÅNED < 13, skal der testes for længde (=10 cifre)
Case Is = Len(MyValue) <> 10 Tekst_1 = "Indtast 10 cifre" Flag = False
' Altså: De forskellige "case is" skal testes, ' og når fejl findes, skal InputBox dukke op med den aktuelle "Tekst_1"
' Og test Modulus: 'case is (her testes, om cpr er validt, såvidt jeg husker: ' modulus (sum(7*ciffer_1, 6*ciffer_2, 5*ciffer_3, osv.) ; 11)=0 ' Tekst_1 = "Fejl, Modulus forkert"
Hej Jan tak for dit svar, det er næsten, hvad jeg søger. Tak finb
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.