Avatar billede macho Praktikant
05. februar 2010 - 09:38 Der er 10 kommentarer og
1 løsning

Indstillinger for tekstfelt - bestemt format

Hej,

Jeg har et tekstfelt, hvori der SKAL skrives en bestemt type data med en bestemt længde (17 karakterer inkl. mellemrum), f.eks.:

"70707070 FEB 2010"

Hvordan kan dette defineres i et alm. tekstfelt? Eller kan det kodes i VBA - hvordan?

Please... anyone?
Avatar billede supertekst Ekspert
05. februar 2010 - 09:46 #1
Hvordan er tekstfeltet defineret?
Avatar billede macho Praktikant
05. februar 2010 - 12:42 #2
Tekstfeltets navn er: DTGFM1
Type: Normal tekst
Maksimal længde: 17
Tekstformat: Store bogstaver
Tillad udfyldning
Avatar billede supertekst Ekspert
05. februar 2010 - 13:24 #3
Opret en makro do. nedenstående og kald denne ved udgangen af feltet i egenskaber:

Public Sub checkLængde()
Dim lgd As Byte
    lgd = Len(FormFields("DTGFM1").Result)

rem Fejlmelding
    If lgd <> 17 Then
        MsgBox ("Længde skal være 17 tegn - er: " & CStr(lgd))
    End If
End Sub
Avatar billede macho Praktikant
05. februar 2010 - 14:09 #4
supertekst, jeg tror du misforstod mig. Problemet er ikke så meget længden af feltet; det er derimod formatet, der er vigtigt:

1. De første 8 tegn SKAL være tal
2. 9. tegn et mellemrum
3. 10., 11. og 12. tegn SKAL være bogstaver
4. 13. tegn SKAL være mellemrum
5. 14., 15., 16. og 17. tegn SKAL være tal

Beklager jeg ikke fik defineret ordentligt - har du stadig et bud på dette?
Avatar billede supertekst Ekspert
05. februar 2010 - 14:24 #5
Ja - men det må vente lidt p.g.a. kundeopgaver
Avatar billede macho Praktikant
05. februar 2010 - 14:39 #6
Helt OK - det haster heller ikke mere end det jager :-)

Go' weekend...
Avatar billede supertekst Ekspert
05. februar 2010 - 14:46 #7
Ok - & i lige måde..
Avatar billede supertekst Ekspert
05. februar 2010 - 23:55 #8
Public Sub checkFelt()
Dim felt As String
    felt = FormFields("Tekst1").Result
       
    If kontrol(felt) = True Then
        MsgBox ("OK")
    Else
        MsgBox ("Fejl i indtastning")
    End If
End Sub
Private Function kontrol(felt)
    kontrol = True
   
    If checkNumerisk(felt, 1, 8) = False Then
        kontrol = False
    Else
        If checkNumerisk(felt, 14, 17) = False Then
            kontrol = False
        Else
            If Mid(felt, 9, 1) <> " " Or Mid(felt, 13, 1) <> " " Then
                kontrol = False
            Else
                If checkAlfa(felt, 10, 12) = False Then
                    kontrol = False
                End If
            End If
        End If
    End If
End Function
Private Function checkNumerisk(felt, fra, til)
Dim f As Byte
    checkNumerisk = True
   
    For f = fra To til
        If IsNumeric(Mid(felt, f, 1)) = False Then
            checkNumerisk = False
        End If
    Next f
End Function
Private Function checkAlfa(felt, fra, til)  'A - Z
Dim f
    checkAlfa = True
   
    For f = fra To til
        If Asc(Mid(felt, f, 1)) < 65 Or Asc(Mid(felt, f, 1)) > 90 Then
            checkAlfa = False
        End If
    Next f
End Function
Avatar billede macho Praktikant
06. februar 2010 - 10:37 #9
Super, supertekst. Tredje linje i sub'en skal bare lige rettes fra:

felt = FormFields("Tekst1").Result

til:

felt = ActiveDocument.FormFields("Tekst1").Result

Men det var heldigvis nemt nok :-)

Giv mig et svar, så du kan få dine velfortjente points.
Avatar billede supertekst Ekspert
06. februar 2010 - 10:44 #10
Fint det lykkedes -
Avatar billede tjp Mester
08. februar 2010 - 10:40 #11
Man ku også bruge RegExp:

Private Function Kontrol(felt)
  Dim regEx, retVal
  Set regEx = New RegExp
  regEx.Pattern = "\d{8} [A-ZÆØÅ]{3} \d{4}"
  regEx.IgnoreCase = False
  Kontrol = regEx.test(felt)
End Function


Husk i så fald at referere 'Microsoft VBScript Regular Expressions 5.5' under 'Tools >> References...'
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

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