Avatar billede kroholt Nybegynder
07. december 2005 - 13:06 Der er 5 kommentarer og
1 løsning

VBA kode til tildeling af ledige initialer

På et regneark har jeg i kolonne A en liste med intialer.
Listen er løbende blevet udvidet, og er efterhånden blevet uoverskueligt at holde styr på. Derfor tænkte jeg om det er muligt, at lave en makro, der skal kontrollere om de nye initialer allerede står på listen eller ej.

Hvis initialerne ikke står på listen, så skal det nye sæt initaler tilføjes nederst på listen.
Hvis initialerne allerede står på listen, så skal initialerne ikke tilføjes igen.

Hvert sæt initialer kan være på 2 - 4 bogstaver.
Initialerne må ikke indeholde af Å,Æ,Ø. Endvidere må de ikke begynde med Q og Z.
Avatar billede supertekst Ekspert
07. december 2005 - 13:19 #1
Kunne du forestille dig en dialogboks, hvori de nye initialer indtastes - kontrolleres og evt. tilføjes hvis OK?
Avatar billede kroholt Nybegynder
07. december 2005 - 13:22 #2
Det er lige præcis det, jeg er ude efter.
Avatar billede supertekst Ekspert
07. december 2005 - 13:26 #3
OK, vender tilbage :-)
Avatar billede supertekst Ekspert
07. december 2005 - 14:36 #4
Koden i userformen er følgende - men hvis du vil have hele excel-file incl. alt - så send en mail til pb@skivehs.dk.
I userformen er der en tekstbox (initialer) m/max lgd på 4 tegn. En label (meddelelse) samt to knapper - OK & Luk.
I ThisWorkbook loades formularen.
- - - -



Dim sidsteRække As Integer
Private Sub LUK_Click()
    Unload nyeInitialer
End Sub
Private Sub OK_Click()
Dim bemærkninger As String
    Meddelelse.Caption = ""
    If findes(UCase(initialer)) = True Then
        Meddelelse.Caption = "Findes i forvejen"
    Else
        If Len(initialer) >= 2 Then
            bemærkninger = okInitialer(UCase(initialer))
            If bemærkninger = "" Then
                sidsteRække = sidsteRække + 1
                ActiveSheet.Cells(sidsteRække, 1).Value = initialer
                Meddelelse.Caption = "Ok - tilføjes"
            Else
                Meddelelse.Caption = bemærkninger
            End If
        Else
            Meddelelse.Caption = "For få tegn i initialer"
        End If
    End If
   
    initialer.SetFocus
End Sub
Private Function findes(init)
Dim f
    For f = 1 To sidsteRække
        If UCase(Cells(f, 1)) = init Then
            findes = True
            Exit Function
        End If
    Next f
    findes = False
End Function
Private Function okInitialer(init)
Dim førsteTegn, illegaleTegn1 As String, illegaleTegnx As String, fejl As String, f
    illegaleTegn1 = "QZ"
    illegaleTegnx = "ÆØÅ"
    fejl = ""
   
    førsteTegn = Left(init, 1)
    If InStr(illegaleTegn1, førsteTegn) = 1 Then
        fejl = "Må ikke begynde med Q eller Z!" + vbCr
    End If
   
    For f = 1 To Len(init)
        If InStr(illegaleTegnx, Mid(init, f, 1)) > 0 Then
            fejl = fejl + "Må ikke indeholde Æ, Ø eller Å"
            okInitialer = fejl
            Exit Function
        End If
    Next f
   
    okInitialer = fejl
End Function
Private Sub UserForm_activate()
    sidsteRække = ActiveCell.SpecialCells(xlLastCell).Row    'henter sidste celle
End Sub
Avatar billede kroholt Nybegynder
07. december 2005 - 15:29 #5
Den funker :) så smid et svar.
Avatar billede supertekst Ekspert
07. december 2005 - 16:21 #6
Det var godt - så er svaret her!
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