16. november 2017 - 21:29Der er
6 kommentarer og 1 løsning
Excel VBA sorter på dato!
Hej Jeg har et Excel ark hvor kolonne A indeholder datoer, kolonne b er tekst, kolonne C beløb.
Jeg har lavet en macro, der sorterer på dato kolonnen, først gemmes den celle cursoren står i, arket sorteres og cursor returnerer til den celle den stod i før sorteringen.
Nu er jeg nået ned til celle A173, og har indtastet en dato der ligger før den der ligger i celle A128. men den sidste indtastede række lægges ikke korrekt sorteret ind i arket.
Macroen ser sådan her ud:
Sub SorterPaaDato() ' ' Test Makro ' Makro indspillet 27-07-01 af Per Krog ' Dim kurpos As String ' kurpos = (ActiveCell.Address) Range("A4:C210").Select Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=4, MatchCase:=False, Orientation:=xlTopToBottom Range(kurpos).Select End Sub
------------------------------------------------------- Som det ses er range sat til A4:C210, så celle A173 ligger inden for området.
Kolonne a er formateret som dato. Fandt ud af noget mystisk. Når jeg afspiller makroen trinvis, fungerer den uden problemer. Jeg har lavet en knap i toppen af arket, som aktiverer makroen når jeg klikker på den, jeg kan se at arket bliver opdateret men sorteringen bliver ikke udført. Hvis jeg højere oppe i arket indsætter en ny række og sætter en dato der ligger i starten af året, kører makroen også uden problemer, også via klik på knappen. Jeg synes godt nok det er vildt underligt, og kan ikke helt gennemskue hvad der sker.
finb! Hvad er det lige denne linje skulle gøre ekstra? selection.currentRegion.select
Er der nogen der kan pinne de enkelte step ud i denne, hvad der præcis sker: Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=4, MatchCase:=False, Orientation:=xlTopToBottom Jeg går ud fra at det er her sorteringen sker.
Opgave løst. Der finde 2 makro kildekoder. -------------------------------------------------------- Der er indsat en "CommandoButton1" - "Click" Her var range sat til Range("A4:C170") er nu rettet til Range("A4:C183"), "183 er sidste række der skal medtages. -------------------------------------------------------- Private Sub CommandButton1_Click() ' Test Makro ' Makro indspillet 27-07-01 af Per Krog ' Dim kurpos As String ' kurpos = (ActiveCell.Address) Range("A4:C183").Select Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=4, MatchCase:=False, Orientation:=xlTopToBottom Range(kurpos).Select End Sub
---------------------------------------------------------------- Desuden er der en sub "General" - "Declaration" Hvor range var sat korrekt til Range("A4:C183") ---------------------------------------------- Sub SorterPaaDato() ' ' Test Makro ' Makro indspillet 27-07-01 af Per Krog ' Dim kurpos As String ' kurpos = (ActiveCell.Address) Range("A4:C182").Select Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=4, MatchCase:=False, Orientation:=xlTopToBottom Range(kurpos).Select End Sub
--------------------------------------------------------------------------------------------- Så efter at have rettet range under "CommandoButton" "Click" fungerer det hele igen.
Selection.Sort Key1:=Range("A4") :: sorter efter, hvad der står i A4, Order1:=xlAscending :: i stigende orden Header:=xlGuess :: overskrift med eller ej MatchCase:=False :: respekter små/store bogstaver Orientation:=xlTopToBottom :: sorter oppefra og ned
""Er der nogen der kan pinne de enkelte step ud i denne, hvad der præcis sker""
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.