Avatar billede Butterfly Ekspert
27. april 2016 - 07:48 Der er 6 kommentarer og
1 løsning

Sorter på ikke navngivet ark

Hej
Jeg har et regneark hvor jeg hver uge laver et nyt ark, det nye ark bliver navngivet efter datoen. Er det muligt at lave en makro der kan sortere rækkerne på det ark?
Jeg har en makro der automatisk opretter et nyt ark, men hvad med sorteringen, når jeg har sat et vilkårligt antal rækker ind?
Lige nu ser makroen sådan ud:

Sub SorterRækker()
'  Sluk lige skærmen
Application.ScreenUpdating = False
'
    Rows("3:3").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Worksheets("Testark").sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Testark").sort.SortFields.Add Key:=Range("A3:A11") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Testark").sort
        .SetRange Range("A3:N11")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("B2").Select
End Sub

Det er ("Testark") og ("A3:N11") jeg gerne vil have til at være variable. A3:N er ok, men ikke N11
Avatar billede supertekst Ekspert
27. april 2016 - 09:34 #1
Public Sub udførSortering()
Dim arknavn As String                              'arknavn, der skal sorteres
Dim antalRæk As Integer                            'antal rækker på ark, der skal sorteres
    arknavn = "Ark2"
    antalRæk = findAntalRækker(arknavn)
   
    SorterRækker arknavn, antalRæk
End Sub
Sub SorterRækker(arknavn, sidsteRæk)
'  Sluk lige skærmen
Application.ScreenUpdating = False
'
    ActiveSheet.Rows("3:3").Select
    ActiveSheet.Range(Selection, Selection.End(xlDown)).Select
   
    ActiveWorkbook.Worksheets(arknavn).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(arknavn).Sort.SortFields.Add Key:=Range("A3:A" & sidsteRæk) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets(arknavn).Sort
        .SetRange Range("A3:N" & sidsteRæk)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveSheet.Range("B2").Select
End Sub
Private Function findAntalRækker(arknavn)
    Sheets(arknavn).Activate
    findAntalRækker = ActiveCell.SpecialCells(xlLastCell).Row
End Function
Avatar billede Butterfly Ekspert
27. april 2016 - 13:12 #2
Hej
Tak for svaret, men er det muligt at lave det uden arknavn? og uden bestemt antal rækker?
Avatar billede supertekst Ekspert
27. april 2016 - 13:44 #3
Begge dele er nødvendige i koden vedr. sorteringen - hvordan forestiller du dig det ellers?
Avatar billede Butterfly Ekspert
29. april 2016 - 09:26 #4
Jeg tænkte om det var muligt at bruge active sheet i stedet for selve navnet på arket.
Avatar billede supertekst Ekspert
29. april 2016 - 09:40 #5
Så skal du anvende ActiveSheet.Name
Avatar billede Butterfly Ekspert
26. maj 2016 - 07:10 #6
Tak for hjælpen, det virker perfekt. Skriv et svar og få point
Avatar billede supertekst Ekspert
26. maj 2016 - 08:39 #7
Har lagt svar i #1
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