Avatar billede denero Juniormester
22. september 2011 - 14:38 Der er 6 kommentarer og
1 løsning

Validering af tekstbokse

Har en indtastformular med 9 tekstbokse.
vil gerne have valideret 3 af dem således:

1.Tekstboks
Datoformat og en dato mellem 01-01-2009 til 31-12-2099.

2. Tekstboks
Maks antal tegn(tal og bogstaver) må være 7

3. Tekstboks
Årstal og mellem 1900 til 2099.

Har flg. kode på alle tekstbokse:

If TextBox1.Text = "" Then
MsgBox "Data mangler!"
TextBox1.SetFocus


Exit Sub
End If

osv.vedr. tekstbok 2-3-4-5-6-7-8-9
Avatar billede Ialocin Novice
23. september 2011 - 12:42 #1
Hej denero

Kigger på sagen :o)

Dog lige et spørgsmål:
Hvad sker der når du tabulerer ud af textbox1 ?? ... Får texkbox1 så focus igen = står cursoren i textboxen ?

Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
25. september 2011 - 07:54 #2
Som det er nu kan man godt tabulere sig ud af eks. tekstboks1 uden , at der er tilføjet data. Det er først når den makro, der indlæser data fra "boksene" afvikles, at der kommer en fejlmelding op om manglende data. Ved tryk på ok (fejlmedelse) sættes der focus + tabulator på den første boks med manglende data.
Det ville nok være bedre, at man ikke kunne "komme" ud af boksen, førend de rigtige data var idtastet.
Avatar billede Ialocin Novice
26. september 2011 - 00:13 #3
Hej Denero

Hermed lidt VBA kode til dine 3 textboxe.

Koderne aktiveres når focus flyttes ud af den enkelte textbox ... dog ikke, hvis der IKKE er påbegyndt en indtastning i textboksene!

Koden er lavet og virker i Excel 2003 ...



------------

'Datoer skal være mellem 01-01-2009 og 31-12-2099
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim a As Date
Dim b As Date

'sæt det ønskede dato interval
a = "01-01-2009"
b = "31-12-2099"


    'hvis textbox1 er tom
    If TextBox1.Text = "" Then
   
            'hold focus i den aktuelle textbox
            Cancel.Value = True
           
           
            MsgBox "Data mangler!"
           

    'hvis der er tastet i textbox1
    Else
   
        'hvis det indtastede er en dato
        If IsDate(TextBox1.Text) = True Then
   
            'hvis den indtastede dato ligger udenfor intervallet
            If TextBox1.Value < a Or TextBox1.Value > b Then
   
                'hold focus i den aktuelle textbox
                Cancel.Value = True
               
                MsgBox "Datoen ligger udenfor det ønskede interval!", vbInformation
             
            'hvis den indtastede dato ligger indenfor intervallet
            Else
               
                'formater textboxen
                Me.TextBox1.Text = Format(CDate(TextBox1.Text), "dd-mm-yyyy")
   
            End If
       
        'hvis det indtastede ikke er en dato
        Else
       
            'hold focus i den aktuelle textbox
            Cancel.Value = True
           
           
            MsgBox "Der er ikke indtastet et dato format...(''dd-mm-åååå'' eller ''December 24 2010'')", vbInformation
       
        End If


    End If



End Sub




------------



'Antal tegn må max være 7
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim streng As String
Dim t As Integer


    'sæt streng = det indtastede i textbox2
    streng = Me.TextBox2.Text
   
    'sæt t = længden på det indtastede i textbox 2
    t = Len(streng)
           
   
    'hvis t (længden) er større end 7 tegn
    If t > 7 Then
   
        'hold focus i den aktuelle textbox
        Cancel.Value = True
   
   
        MsgBox "Der er tastet flere end 7 tegn ind", vbInformation
               
       
    End If
                   
           
           
End Sub




------------




'Årstal skal være mellem 1900 til 2099
Private Sub TextBox3_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim c As Integer
Dim d As Integer
Dim åtal As Integer


'sæt det ønskede dato interval
c = "1900"
d = "2099"


    'hvis textbox3 er tom
    If TextBox3.Text = "" Then
   
            'hold focus i den aktuelle textbox
            Cancel.Value = True
           
            MsgBox "Data mangler!"
           
           
    'hvis der er tastet i textbox3
    Else
   
   
             
        'hvis det indtastede er et tal
        If IsNumeric(TextBox3.Text) = True Then
           
            'konverter tallet til et heltal
            TextBox3.Text = CInt(TextBox3.Text)
           
            'hvis heltallet ligger udenfor intervallet
            If TextBox3.Text < c Or TextBox3.Text > d Then
   
                'hold focus i den aktuelle textbox
                Cancel.Value = True
               
                MsgBox "Året ligger udenfor det ønskede interval:  1900 - 2099!", vbInformation
               
             
   
            End If


        'hvis det indtastede ikke er et tal
        Else
       
            'hold focus i den aktuelle textbox
            Cancel.Value = True
           
           
            MsgBox "Der er ikke indtastet et heltal", vbInformation
       
        End If
       

    End If

End Sub





------------

Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
26. september 2011 - 10:04 #4
Hej Nicolai

Har lige kigget på det, men jeg er lidt hængt op de næste par dage. Er det ok - jeg skal nok svare, men vil selvfølgelig gerne lige prøve det af.
Avatar billede Ialocin Novice
26. september 2011 - 10:39 #5
Hej Denero

Du prøver bare :o)


Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
04. oktober 2011 - 11:13 #6
Hej Nicolai

Det virker. Tusind tak for hjælpen og undskyld, at jeg var så længe om det. Ligger du et svar?
Avatar billede Ialocin Novice
06. oktober 2011 - 13:28 #7
Hej Denero

Godt at høre :o)
Hermed mit "svar"

Med venlig hilsen, Nicolai
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester