Avatar billede brasso Forsker
16. november 2017 - 21:29 Der 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.

Hvad skal der til for at det virker korrekt?

Håber der er en VBA kender der kan hjælpe.
Avatar billede finb Ekspert
17. november 2017 - 08:53 #1
måske:
Range("A4:C210").Select
selection.currentRegion.select
Avatar billede Sandstrøm Novice
17. november 2017 - 11:31 #2
Har du sørget for,  at kolonnen er formateret som dato?
Avatar billede brasso Forsker
17. november 2017 - 19:44 #3
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.
Avatar billede brasso Forsker
17. november 2017 - 19:47 #4
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.
Avatar billede brasso Forsker
19. november 2017 - 21:52 #5
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.
Avatar billede finb Ekspert
20. november 2017 - 09:25 #6
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""
Avatar billede brasso Forsker
20. november 2017 - 18:30 #7
Tak finb så forstår jeg koden.
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