07. december 2005 - 13:06Der 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.
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
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.