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

Sorteren in een werkblad

Status
Niet open voor verdere reacties.

deschrik

Gebruiker
Lid geworden
2 okt 2007
Berichten
122
Hallo medeforummers,

Ik zit met een probleem. Ik wil graag een werkblad van de beveiliging afhalen, vervolgens alle cellen selecteren die gevuld zijn en de geselecteerde cellen moeten vervolgens gesorteerd worden op basis van kolom A.
Tot het selecteren van de cellen gaat het goed, maar met het sorteren krijg ik de fout: Deze eigenschap of methode wordt niet ondersteund door dit object.

Tot nu toe heb ik de onderstaande VBA Code:

CD = FormatDateTime(Worksheets(WsCap).Range(CCD).Value, 2)

If CD <> "30-12-1899" Then
Worksheets(WsCap).Activate
ActiveSheet.Unprotect
ActiveSheet.UsedRange.Select
ActiveSheet.Selection.Sort
ActiveSheet.Protect
End If
 
Deschrik, er vallen me 2 dingen op in je code.
1) Je maakt gebruik van de UsedRange eigenschap. Dit kan je beter aanpassen naar de CurrentRegion eigenschap. Het nadeel van UsedRange is namelijk dat er een gebied wordt geselecteerd tot aan de 'laatst gebruikte cel'. Ofwel, als je in bereik A1:B10 je tabel hebt, maar je hebt wel een keer geklikt in cel K20, dan zal het UsedRange-bereik A1:K20 zijn! Kijk in je help van VBA voor de werking van CurrentRegion.
2) Verwijder de 'ActiveSheet' in de regel 'ActiveSheet.Selection.Sort'. Dan loopt ie wel door.;)

Groet, Leo
 
Ginger,
Bedankt voor je snelle antwoord!

Wanneer ik Activesheet.Sort vervang door Activesheet.Selection.Sort,
Dan krijg ik nog steeds de foutmelding: deze eigenschap of methode wordt niet ondersteund door dit object.:shocked:
 
Deschrik, Heu??? Je had in je code de regel 'ActiveSheet.Selection.Sort' en NIET de regel 'ActiveSheet.Sort'. Daarom zei ik ook...
2) Verwijder de 'ActiveSheet' in de regel 'ActiveSheet.Selection.Sort'. Dan loopt ie wel door.
Je moet dus juist het woord 'ActiveSheet' vewijderen (en de rest laten staan).:rolleyes:

'Sort' is namelijk géén methode of eigenschap van het object ActiveSheet maar wel van Selection!

Groet, Leo
 
Oeps, verkeerd gelezen.

Maar nu heb ik dus:

If CD <> "30-12-1899" Then
Worksheets(WsCap).Activate
ActiveSheet.Unprotect
ActiveSheet.UsedRange.Select
Selection.Sort
ActiveSheet.Protect
End If


Maar nu krijg ik de foutmelding: Methode Sort van klasse Range is mislukt!:confused:
 
Deschrik, Dat komt waarschijnlijk door je UsedRange... Probeer 'm 'ns zo
Code:
    If CD <> "30-12-1899" Then
        Worksheets(WsCap).Activate
        ActiveSheet.Unprotect
        Range("A1").CurrentRegion.Select
        Selection.Sort
        ActiveSheet.Protect
    End If
(niet getest!)
Waarbij ik er vanuit ga dat je tabel netjes in cel A1 begint.

Groet, Leo
 
Hmm zeer spijtig,

dan krijg ik dezelfde foutmelding verwijzend naar: Range("A1").CurrentRegion.Select:confused:
 
Geef ook de andere parameters van het sorteren mee in de code.

Dus cel waarop je selecteert, 2de keuze, 3de keuze, op- of aflopend, etc.

Neem de code op met de macro recorder en je hebt al een goede basis.

Wigi
 
Hmm zeer spijtig,

dan krijg ik dezelfde foutmelding verwijzend naar: Range("A1").CurrentRegion.Select:confused:

Selecteren hoeft niet.

Code:
Range("A1").CurrentRegion.Sort 'hierachter de andere parameters...

Wigi
 
Mijn Nieuwe code is:

If CD <> "30-12-1899" Then
Worksheets(WsCap).Activate
ActiveSheet.Unprotect
Range("A1").CurrentRegion.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


Maar nu krijg ik de foutmelding: Voor deze bewerking moeten alle samengevoegde cellen dezelfde afmetingen hebben.:confused:
 
Dat staat als waarschuwing in mijn handtekening hier op het forum:

Vermijd samengevoegde cellen...

Je zal die toch moeten verwijderen of een andere layout bedenken.
 
Ik heb de samengevoegde cellen verwijderd op mijn werkblad, maar nu sorteert hij ook dit werkblad, terwijl hij het ander actief gemaakte sheet moet sorteren!:(
 
Code:
'...
[B]Sheets("naamvanhetblad").[/B]Range("A1").CurrentRegion.Sort '...
 
Waarschijnlijk heb je die

Sheets("naamvanhetblad").

niet toegepast op de cellen waarop je sorteert.
 
Wederom een keer Hartelijk dank Wigi!

Dat was inderdaad de oplossing!:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan