Der er flere forskellige problemstillinger i din opgave, der gør, at det kræver lidt 'fodarbejde'.
For det første benytter du fanebladets/regnearkets navn i din sortering, og da du selv nævner, at der kan være et vilkårligt antal faner/regneark, så kan vi heller ikke vide, hvad de hedder.
For det andet, så benytter du tabel navne i din sortering, og dette give samme problem som i punkt 1, men blot på tabel niveau.
Altså er vi nødt til at lave sorteringen af, hvert enkelt ark, på kolonne niveau, hvilket igen rejser en række problem stillinger.
For det første kan tabellerne være af forskellig længde (rækker), og for det andet kan der være eventuelle SUM rækker, der ikke skal medtages i sorteringen.
Kort sagt: Makroen skal lave det hele "manuelt".
Her er et forslag til, hvordan en sådan makro kunne se ud:
Sub MakroSortering()
' * ' Initialize Const Columns2Sort As String = "A:B"
On Error Resume Next
' * ' Define variables Dim LastRow As Long Dim WS As Excel.Worksheet Dim SingleColumn As Excel.Range
' * ' Sort given columns on each worksheet in the workbook For Each WS In ThisWorkbook.Worksheets LastRow = 2 For Each SingleColumn In WS.Range(Columns2Sort).Columns LastRow = WorksheetFunction.Max(LastRow, WS.Cells(WS.Rows.Count, SingleColumn.Column).End(xlUp).Row) Next
With WS.Sort With .SortFields .Clear .Add Key:=Range("A2:A" & LastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal End With .SetRange Range(Replace(Columns2Sort, ":", "1:") & LastRow) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Next
ES: ' End of Sub Set WS = Nothing Set SingleColumn = Nothing
End Sub |
BEMÆRK!
Du er nødt til at angive, hvilke kolonner, der skal sorteres i konstanten i første kode linje.
Vær opmærksom på beregningen af 'LastRow', hvis du har eventuelle SUM rækker med, der ikke skal sorteres - træk selv det antal rækker fra, der ikke skal medtages.
Og, vigtigst: I min definition af, hvad der skal sorteres på ('.Add' kode linjen) har jeg blot sagt, at der skal sorteres på kolonne A.
Dette skal du naturligvis ændre til dine egne sorteringskriterier.