08. oktober 2002 - 09:53Der er
11 kommentarer og 1 løsning
Hjælp teksten forsvinder igen. (VBA)
Igår fik jeg hjælp af jkron og bak med en modulus 11 kontrol af CPR numre, fungerer fint nu så tak for det. Men i et tilhørende tekstfelt ville jeg gerne have beregnet alderen ud fra CPR-nummeret. For at undgå en commandoknap har jeg valgt at beregningen sker ved Enter, men når der trykkes på tabulatortasten forsvinder teksten igen (det gør den ikke hvis der bliver klikket et andet sted med musen!). Er der nogen som har et løsningsforslag, koden (som jeg fik af bak) ser således ud:
Private Sub txtAlder_Enter()
Dim temp temp = DateSerial(Mid(txtBarnCPR.Value, 5, 2), Mid(txtBarnCPR.Value, 3, 2), Mid(txtBarnCPR.Value, 1, 2)) HunfaAnbringelse.txtAlder = Right(DatePart("YYYY", Date - temp), 2)
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Det kan jeg ikke få til at virke. Selv om det nok ikke er flemmingdahl's skyld :-). Hvis jeg forstår dig ret skulle txtAlder.Text ind på denne måde (næsten nederst):
Private Sub txtBarnCPR_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim txtBarnCPR As String txtBarnCPR = Me!txtBarnCPR Dim Xvar As Long Dim SlutCiffer As Long Dim Resultat As Long If Not IsNull(txtBarnCPR) Then Xvar = Val(Mid(txtBarnCPR, 1, 1)) * 4 Xvar = Xvar + Val(Mid(txtBarnCPR, 2, 1)) * 3 Xvar = Xvar + Val(Mid(txtBarnCPR, 3, 1)) * 2 Xvar = Xvar + Val(Mid(txtBarnCPR, 4, 1)) * 7 Xvar = Xvar + Val(Mid(txtBarnCPR, 5, 1)) * 6 Xvar = Xvar + Val(Mid(txtBarnCPR, 6, 1)) * 5 Xvar = Xvar + Val(Mid(txtBarnCPR, 7, 1)) * 4 Xvar = Xvar + Val(Mid(txtBarnCPR, 8, 1)) * 3 Xvar = Xvar + Val(Mid(txtBarnCPR, 9, 1)) * 2 SlutCiffer = Val(Mid(txtBarnCPR, 10, 1)) Resultat = 11 - (Xvar Mod 11)
If Resultat = 11 Then Resultat = 0 End If If Resultat = SlutCiffer Then cprtest = True Else cprtest = False Dim sBesked As String sBesked = "Dette CPR-nummer er ikke gyldigt" & vbNewLine sBesked = sBesked & "efter Modulus 11 testen. Så enten" & vbNewLine sBesked = sBesked & "er du blevet snydt, eller også" & vbNewLine sBesked = sBesked & "har du tastet forkert. Prøv igen :-)" MsgBox sBesked End If Else cprtest = Null End If
En mulighed kunen være at teste for hvilken tast, der blevtrykket på. er det tab-tasten gemmes indholdet i en variabel og skrives tilbage. Jeg har ikke Excel her, så jeg kan ikke lige huske den korrekte syntax, men så vidt jeg husker er det noget med
Jeg har prøvet at ændre txtAlder.Text til Temp, men fik samme besked: Compile error: Invalid qualifier
Samt en markering af txtBarnCPR i linien: txtAlder.Text = DateSerial(Mid(txtBarnCPR.Value, 5, 2)....
Der er nok noget om hvilken tasttype, da det kun er tab-tasten der sletter indholdet igen. Det er bare helst den der skal bruges. Jeg skal til et møde nu, men prøver når jeg kommer tilbage ca 15.00. Indtil da tak for hjælp, selvom jeg ikke har fundet løsningen endnu. :-(
Prøv med dette. Der er dog et eller andet galt, for den melder ud at mit cpr-nummer ikke er gyldigt, og det plejer det da at være :-), men det regner alderen korrekt ud.
Private Sub txtBarnCPR_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim cprtest As Boolean Dim txtBarnCpr As String Dim alder As Date txtBarnCpr = Me!txtBarnCpr Dim Xvar As Long Dim SlutCiffer As Long Dim Resultat As Long If Not IsNull(txtBarnCpr) Then Xvar = Val(Mid(txtBarnCpr, 1, 1)) * 4 Xvar = Xvar + Val(Mid(txtBarnCpr, 2, 1)) * 3 Xvar = Xvar + Val(Mid(txtBarnCpr, 3, 1)) * 2 Xvar = Xvar + Val(Mid(txtBarnCpr, 4, 1)) * 7 Xvar = Xvar + Val(Mid(txtBarnCpr, 5, 1)) * 6 Xvar = Xvar + Val(Mid(txtBarnCpr, 6, 1)) * 5 Xvar = Xvar + Val(Mid(txtBarnCpr, 7, 1)) * 4 Xvar = Xvar + Val(Mid(txtBarnCpr, 8, 1)) * 3 Xvar = Xvar + Val(Mid(txtBarnCpr, 9, 1)) * 2 SlutCiffer = Val(Mid(txtBarnCpr, 10, 1)) Resultat = 11 - (Xvar Mod 11)
If Resultat = 11 Then Resultat = 0 End If If Resultat = SlutCiffer Then cprtest = True Else cprtest = False Dim sBesked As String sBesked = "Dette CPR-nummer er ikke gyldigt" & vbNewLine sBesked = sBesked & "efter Modulus 11 testen. Så enten" & vbNewLine sBesked = sBesked & "er du blevet snydt, eller også" & vbNewLine sBesked = sBesked & "har du tastet forkert. Prøv igen :-)" MsgBox sBesked End If Else cprtest = Null End If
Glem det om fejl i cprnummer beregningen. Det var mig der sov i timen. JHeg indtastede cprnummer MED bindestreg og så bliver det ugyldigt. For mig at se virker det nu, hvcis du har to felter i formularen ved navn txtBarnCpr og txtAlder.
Velbekomme :-) Jeg bliver altid glad når løsningsforslagene virker.
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.