jazzmatazz
Gebruiker
- Lid geworden
- 5 apr 2007
- Berichten
- 140
Hallo,
Ik heb een werkblad met daarin verschillende kolommen. In 37 rijen staan tot nu toe gegevens, maar dat aantal zal snel oplopen. Ik wil de verzameling gegevens sorteren, eerst op kolom E, vervolgens op kolom F en tenslotte op kolom A. Ik gebruik daarvaar de functie ALT + D + S. Daarnaast filter ik nog kolom I. Ik wil er een geautomatiseerde functie van maken zodat ik niet elke keer alle sorteer en filterhandelingen één voor één hoef uit te voeren. Omdat ik niet heel bedreven ben in VBA, heb ik een macro opgenomen. Daarbij gebruik ik opnieuw de functie functie ALT + D + S. De macro ziet er dan zo uit.
Sub Overview()
'
' Overview Macro
'
' Keyboard Shortcut: Ctrl+o
'
ActiveWindow.SmallScroll Down:=-15
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("E4:E37"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("F4:F37"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder _
:="Me,Other,None", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("A4:A37"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Range("$A$3:$J$37").AutoFilter Field:=9, Criteria1:="=Open", _
Operator:=xlOr, Criteria2:="=Reopened"
End Sub
Als ik nu rijen met gegevens ga toevoegen en ik voer de macro uit, merk ik dat rijen 38 en verder niet mee worden gesorteerd. In de VBA tekst zie ik dat er verwijzingen zijn naar rij 37. Ik leid hier uit af dat hij denkt dat hij alleen t/m rij 37 moet sorteren. Maar ik wil graag dat hij altijd alles sorteert, dus ook rij 38 en verder, als daar op een later moment gegevens in komen te staan. Ik heb al geprobeerd om de getallen 37 in de macro te wijzigen in bv. 600 (rij 600), maar dat levert alleen foutmeldingen en forced closures van Excel op.
Hoe kan ik er nou voor zorgen dat hij alle kolommen sorteert waar zich gegevens in bevinden (en dus ook toekomstige kolommen)?
Dank alvast voor suggesties.
De macro
Ik heb een werkblad met daarin verschillende kolommen. In 37 rijen staan tot nu toe gegevens, maar dat aantal zal snel oplopen. Ik wil de verzameling gegevens sorteren, eerst op kolom E, vervolgens op kolom F en tenslotte op kolom A. Ik gebruik daarvaar de functie ALT + D + S. Daarnaast filter ik nog kolom I. Ik wil er een geautomatiseerde functie van maken zodat ik niet elke keer alle sorteer en filterhandelingen één voor één hoef uit te voeren. Omdat ik niet heel bedreven ben in VBA, heb ik een macro opgenomen. Daarbij gebruik ik opnieuw de functie functie ALT + D + S. De macro ziet er dan zo uit.
Sub Overview()
'
' Overview Macro
'
' Keyboard Shortcut: Ctrl+o
'
ActiveWindow.SmallScroll Down:=-15
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("E4:E37"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("F4:F37"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder _
:="Me,Other,None", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("A4:A37"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Range("$A$3:$J$37").AutoFilter Field:=9, Criteria1:="=Open", _
Operator:=xlOr, Criteria2:="=Reopened"
End Sub
Als ik nu rijen met gegevens ga toevoegen en ik voer de macro uit, merk ik dat rijen 38 en verder niet mee worden gesorteerd. In de VBA tekst zie ik dat er verwijzingen zijn naar rij 37. Ik leid hier uit af dat hij denkt dat hij alleen t/m rij 37 moet sorteren. Maar ik wil graag dat hij altijd alles sorteert, dus ook rij 38 en verder, als daar op een later moment gegevens in komen te staan. Ik heb al geprobeerd om de getallen 37 in de macro te wijzigen in bv. 600 (rij 600), maar dat levert alleen foutmeldingen en forced closures van Excel op.
Hoe kan ik er nou voor zorgen dat hij alle kolommen sorteert waar zich gegevens in bevinden (en dus ook toekomstige kolommen)?
Dank alvast voor suggesties.
De macro