• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA automatisch sorteren over meerdere kolommen

Status
Niet open voor verdere reacties.

serpent xx

Gebruiker
Lid geworden
2 mei 2008
Berichten
201
Beste forumleden,

ik zoek een VBA die er voor zorgt dat achtereenvolgens de waardes in kolom B, vervolgens in kolom N en dan in kolom F automatisch gesorteerd worden als men het tabblad verlaat om naar een ander tabblad te gaan.
De waardes dienen alle oplopend gesorteerd te worden.

Wie weet raad?
 

Bijlagen

Zo?

Code:
Private Sub Worksheet_Deactivate()
Cells(1).CurrentRegion.Sort Range("B2"), 2, Range("N2"), , 2, Range("F2"), 2 , xlYes
End Sub
 
Laatst bewerkt:
Omdat de bedoeling is dat er oplopend gesorteerd wordt heb ik het even gewijzigd naar:

Private Sub Worksheet_Deactivate()
Cells(1).CurrentRegion.Sort Range("B2"), 1, Range("N2"), , 1, Range("F2"), 1 , xlYes
End Sub

Maar ik zie dat die alleen kolom B sorteert; met kolom N en F doet ie bij mij niets.
 
Omdat je teveel dezelfde data hebt? Probeer eens wat te veranderen in de kolommen die je wilt sorteren
 
Nee, dat is niet de oorzaak. Kijk maar even naar bijgaand bestand waar ik de data heb aangepast.
 

Bijlagen

Toch doet hij het wel. Als je sommige data wat aanpast werkt het naar behoren. Even wat meer testen;)

Of wil je dat kolommen onafhankelijk van elkaar sorteren?

Code:
With Cells(1).CurrentRegion
  .Columns(2).Sort Range("B2"), 1, , , , , , xlYes
  .Columns(14).Sort Range("N2"), 1, , , , , , xlYes
  .Columns(6).Sort Range("F2"), 1, , , , , , xlYes
End With
 
Laatst bewerkt:
Sorry, maar ik begrijp het niet. Het is de bedoeling dat de kolommen in 1 procedure oplopend gesorteerd worden in d volgorde kolom B - kolom N - kolom F.
Bij mij sorteert die alleen kolom B; met de andere kolommen doet hij niets. Wat zou andere data daar dan aan veranderen?
 
Oooow, mijn fout. :o Hij doet het idd wel. Ga morgen hier mee aan de slag. Bedankt alvast! :thumb:
 
Het werkt perfect; ben er erg blij mee!
Ik zit alleen nog met de volgende vraag. Stel dat gegevens op dit tabblad gefilterd zijn, welke code kan ik dan toevoegen die ervoor zorgt dat bij het verlaten van dit tabblad alle gegevens weer zichtbaar worden?
 
Probeer deze eens

Code:
Private Sub Worksheet_Deactivate()
With Cells(1).CurrentRegion
 .Parent.ShowAllData
 .Sort Range("B2"), 1, Range("N2"), , 1, Range("F2"), 1, xlYes
End With
End Sub
 
Moet er toch nog even op terugkomen. Deze code werkt als de range gefilterd is. Als de rang niet gefilterd is krijg ik een foutmelding.
 
Dat kan kloppen:D Zou nu goed moeten gaan.

Code:
Private Sub Worksheet_Deactivate()
With Cells(1).CurrentRegion
  If .Parent.FilterMode Then .Parent.ShowAllData
 .Sort Range("B2"), 1, Range("N2"), , 1, Range("F2"), 1, xlYes
End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan