• 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.

Automatisch sorteren cellen

Richard.H

Gebruiker
Lid geworden
22 jun 2024
Berichten
32
Mijn range van cellen begint op A2 tot P500.
Cellen A2 tot P2 moeten bij elkaar blijven.
Er moet worden gesorteerd op alfabet oplopend kijkend naar de tekst in klom A.

A B C ....... P
Appel 1 Niks ...... ook niets
Peer
Banaan

Dit is wat ik tot nu toe geprobeerd heb:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Calculate
ActiveSheet.Range("A2:P300").Sort Key1:=Range("A2"), Order1:=xlDescending

End Sub

hij geeft een foutmelding:

fout 1004.jpg
 
En je voorbeeld documentje?
 
Op tabblad Serie info staan de gegevens die gesorteerd moeten worden. In cel A142(tm P142) is een nieuwe serie toegevoegd welke op alfabet gezet moet worden.
 

Bijlagen

Probeer eens of deze doet wat je wil:
Code:
Sub SortSerie()
    Range("Table_1").Select
    ActiveWorkbook.Worksheets("Serie Info").ListObjects("Table_1").Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("Serie Info").ListObjects("Table_1").Sort.SortFields. _
        Add2 Key:=Range("Table_1[Serie:]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Serie Info").ListObjects("Table_1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Laatst bewerkt:
Serie Fallout (cellen A142-P142) heeft hij goed verplaatst maar daarna zijn alle rijen vanaf kolom D, 1 naar beneden geschoven.
 
Laatst bewerkt:
Bij mij niet, in je eigen voorbeeld document.
 
Ik heb die code gewoon achter het werkblad geplakt en op F5 gedrukt.
 
ik doe precies zoals jij maar bij mij schuif alles op....
raar...
Dan maar met de hand sorteren vrees ik...
 
Ik kan ook scheel kijken natuurlijk en zal vanavond nog eens kijken.
 
je kan het controleren. Vanaf kolom H staat in het laatste gedeelte van de tekst de naam van de serie welke in kolom A staat. in de formule verwijst hij steeds naar de cel erboven.

soms kun je beter even stoppen en later verder kijken...😁
 
Code:
ListObjects(1).Range.Sort Cells(1), 2, , , , , ,1
 
Code:
ListObjects(1).Range.Sort Cells(1), 2, , , , , ,1
Die code werkt ook maar met precies hetzelfde probleem als hierboven omschreven.
Hij sorteert alleen verkeerdom, Z naar A, graag sorteren van A naar Z. waarde 2 veranderd naar 1 en sorteert nu wel goed.
Het zal denk ik niet aan de code van jullie beide liggen maar iets in de formule van de betreffende cel.
 
Jij had er een code staan met 'XlDescending' dat is dus 2, daar ben ik vanuit gegaan.
Het moet inderdaad een 1 zijn als je op alfabetische volgorde wil (die 1 mag je ook weglaten 'default')

Wat scheelt er nu nog aan?
 
=SUBSTITUEREN(KLEINE.LETTERS(Opties!$C$60&""&'Serie Info'!B128&"-"&'Serie Info'!A128);" ";"-")

hier gaat er iets fout.

Serie Info'!B128

deze verandert niet naar de juiste cel. Excel moet deze waarde aanpassen maar doet dat niet.
het lijkt dat deze absoluut is maar heet geen $.

Als ik handmatig de cellen knip en op de juiste plek plak gaat alles wel goed.
Bij het sorteren gaat iets fout.
 
Laatst bewerkt:
Formule in H2 en verder naar onderen.
Code:
=SUBSTITUEREN(KLEINE.LETTERS(Opties!$C$60&INDIRECT(ADRES(RIJ();2))&"-"&INDIRECT(ADRES(RIJ();1)));" ";"-")
 
Formule in H2 en verder naar onderen.
Code:
=SUBSTITUEREN(KLEINE.LETTERS(Opties!$C$60&INDIRECT(ADRES(RIJ();2))&"-"&INDIRECT(ADRES(RIJ();1)));" ";"-")
deze formule werkt.
en het sorteren gaat nu goed.
bedankt voor de hulp. wordt zeer gewaardeerd.
 
Laatst bewerkt:
Ik ben al een heel eind op weg maar je komt steeds dingen tegen die je wat anders zou willen/moeten doen.
Zo ook dit:

Als het plaatje veranderd wil ik ook dat de cel C17 op blad Serie veranderd met de waarde A32 op blad Opties.

Er is wel een maar aan...

Cel C17 bevat een gegevensvalidatielijst welke gemaakt wordt uit een tabel op blad opties beginnend bij A70.
Ik wil dat bij het veranderen van het plaatje cel C17 op blad Serie veranderd wordt naar de eerste waarde in die tabel (A71)
 

Bijlagen

Sheets("Opties").Range("A71").Copy Sheets("Serie").Range("C17")

werkt niet, excel blijft in een soort lus hangen en komt met een foutmelding, soms crasht hij.
Ook neemt hij de opmaak van de cel mee wat niet moet, alleen de waarde.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Sheets("Filter").Range("C4")

    
        pic = Sheets("Filter").Range("C4")
      ' Sheets("Opties").Range("A71").Copy Sheets("Serie").Range("C17")
        
        
        
        

Set Afbeelding = ActiveSheet.Pictures.Insert(pic)
    With Afbeelding
        .Top = Rows(5).Top
        .Left = Columns(2).Left
        .Height = Application.CentimetersToPoints(10)
        .Width = Application.CentimetersToPoints(5)
        
    End With
    

End Sub
 
Gebruik.
Code:
application.enableevents  = false
 Sheets("Serie").Range("C17") =  Sheets("Opties").Range("A71").value
application.enableevents = true
 
Terug
Bovenaan Onderaan