Avatar billede Slettet bruger
11. februar 2013 - 15:01 Der er 4 kommentarer og
1 løsning

VBA - RegExp

Hej

Jeg forsøger mig med at lave en funktion, som tjekker om input fra en input box har det rigtige format.

Det rigtige format er (AU|DK|NL)(12|13|14)(?????)
Dvs. enten AU eller DK elle NL så, uden ophold, 12, 13 eller 14 og så uden ophold 5 karaktere efter eget valg, hverken mere eller mindre.

Men herfra er jeg lidt blank og jeg tænker derfor om der er en, som har noget liggende han/hun kunne dele med mig?

På forhånd tak.
Avatar billede Slettet bruger
12. februar 2013 - 14:51 #1
Er det nødvendigt med RegExp her?

Hvad med følgende i Datavalidering:

=ELLER(VENSTRE(A1;2)=E1:E3)*(ELLER(--(MIDT(A1;3;2))=F1:F3))*(LÆNGDE(MIDT(A1;5;255))=5)

hvor E1:E2 indeholder AU, DK, NL og F1:F3 indeholder 12, 13, 14

eller er der noget jeg ikke har forstået?

Hans
Avatar billede Slettet bruger
12. februar 2013 - 15:03 #2
Hej Hans

Jo - det kunne man jo godt. Men det er taget lidt ud af en sammenhæng, hvor jeg har brug for at gøre det med VBA.

Jeg har en knap, hvor man trykker og kan oprette en ny "kode", ved at taste ind i en input box. Hvis ikke koden opfylder ovenstående format, skal den sige at "den går ikke kammerat" og koden skal så ikke oprettes.
Avatar billede kabbak Professor
12. februar 2013 - 18:32 #3
Public Sub Indtast()
    Dim Test As Variant, Data As String, I As Integer, Fortegn As String
    Test = Array("AU", "DK", "NL", 12, 13, 14)
Omigen:
    Data = InputBox("Indtast format(AU|DK|NL)(12|13|14)(?????)")
    If Len(Data) <> 7 Then
        MsgBox "Forkert antal tegn"
        GoTo Omigen
    End If
    Fortegn = Left(Data, 2)
    For I = 0 To UBound(Test)
        If Fortegn = Test(I) Then
            Exit Sub
        End If
    Next
    MsgBox "Forkert fortegn '" & Left(Data, 2) & "' er ikke gyldig"
End Sub
Avatar billede kabbak Professor
12. februar 2013 - 18:36 #4
en rettelse i koden

Public Sub Indtast()
    Dim Test As Variant, Data As String, I As Integer, Fortegn As String
    Test = Array("AU", "DK", "NL", 12, 13, 14)
Omigen:
    Data = InputBox("Indtast format(AU|DK|NL)(12|13|14)(?????)")
  If Data = "" Then Exit Sub
    If Len(Data) <> 7 Then
        MsgBox "Forkert antal tegn"
        GoTo Omigen
    End If
    Fortegn = Left(Data, 2)
    For I = 0 To UBound(Test)
        If Fortegn = Test(I) Then
            Exit Sub
        End If
    Next
    MsgBox "Forkert fortegn '" & Left(Data, 2) & "' er ikke gyldig"
    GoTo Omigen
End Sub
Avatar billede Slettet bruger
13. februar 2013 - 09:39 #5
Hej

Tak
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