Sorteer macro

Status
Niet open voor verdere reacties.

mathijsderuiter

Gebruiker
Lid geworden
21 sep 2012
Berichten
36
Beste mensen,

Ik ben met een bestand bezig om cijfers in de gaten te houden.
Hiervoor worden in het sheet "Rekensheet" telkens de waarden gesorteerd.
Echter, het kan zijn dat er rijen bijkomen of weer verdwijnen als er filialen bij komen of wegvallen.

Ik heb nu dit:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$2" Then
     Sheets("rekensheet").Range("B5:F20").Select
    ActiveWorkbook.Worksheets("Rekensheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Rekensheet").Sort.SortFields.Add Key:=Sheets("rekensheet").Range( _
        "F6:F20"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Rekensheet").Sort
        .SetRange Range("B5:F20")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Sheets("rekensheet").Range("H5:L20").Select
    ActiveWorkbook.Worksheets("Rekensheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Rekensheet").Sort.SortFields.Add Key:=Sheets("rekensheet").Range( _
        "l6:L20"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Rekensheet").Sort
        .SetRange Range("H5:L20")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Sheets("rekensheet").Range("n5:r30").Select
    ActiveWorkbook.Worksheets("Rekensheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Rekensheet").Sort.SortFields.Add Key:=Sheets("rekensheet").Range( _
        "r6:r30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Rekensheet").Sort
        .SetRange Range("n5:r30")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Sheets("rekensheet").Range("t5:x20").Select
    ActiveWorkbook.Worksheets("Rekensheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Rekensheet").Sort.SortFields.Add Key:=Sheets("rekensheet").Range( _
        "x6:x20"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Rekensheet").Sort
        .SetRange Range("t5:x20")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    Sheets("rekensheet").Range("D2").Select
    
End If

End Sub

Het is dus de bedoeling dat er geen vaste range staat, maar iets als: range("B5: laatste rij -2). Ik kom er zelf niet uit.

Bij voorbaat dank!
 
Zonder je gehele code te doorlopen.
Code:
Range("A1:B" & Cells(Rows.Count, 1).End(xlUp).Offset(-2).Row).Sort
Of.
Code:
Range("A1:B" & Cells(Rows.Count, 1).End(xlUp).Row - 2).Sort
Vanaf A1 t/m de laatste cel van kolom A, - 2 rijen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan