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

Datum sorteren

  • Onderwerp starter Onderwerp starter RdS
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

RdS

Gebruiker
Lid geworden
15 feb 2007
Berichten
384
Ik probeer een datum te sorteren.

Ik heb bijvoorbeeld een looptijd van een offerte. deze staat in kolom H.
Als ik op de knop druk datum sorteren wil ik dat deze van kortst lopend naar langst lopend wordt gesorteerd.

Ik heb blijkbaar iets fout gedaan, iemand een idee?
 

Bijlagen

Code:
  Range("Bereik").Select
    Selection.Sort Key1:=Range("SorteerOp"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Het bereik G3:H10 geef je de naam "Bereik", het bereik G3:G10 geef je de naam "SorteerOp".

Dit soort zaken is eenvoudig met de macrorecorder op te nemen.
 
Code:
Private Sub CommandButton1_Click()
    Range("G2:H10").Sort Key1:=Range("G2"), Order1:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub

Wigi
 
Hoe krijg ik dan de code die een macrorecorder gebruikt?

Ik kan een macro maken maar zou niet weten hoe ik het vervolgens onder een "bottum" moet zetten
 
Hoe krijg ik dan de code die een macrorecorder gebruikt?

Ik kan een macro maken maar zou niet weten hoe ik het vervolgens onder een "bottum" moet zetten

Zet de macro recorder aan en doe dan het sorteren manueel. Stop de macro recorder. Ga in VBA naar de module die de code bevat van de sortering. Knip daar de code, maar niet de titel en ook niet End Sub.

Plak dat dan tussen de eerste en de laatste lijn van je Click-event. Dit wordt dus de code die uitgevoerd wordt alos je klikt op de knop.
 
De functie om te sorteren werkt niet goed.
Waarschijnlijk door de functie die ik gebruik om het aantal dagen te berekenen.
Hij gaat nu namelijk sorteren op basis van het eerste nummer

Dus 10 dagen komt voor 3 dagen. Terwijl dit niet juist is.
 
Code:
Private Sub CommandButton1_Click()
    Range("G2:H10").Sort Key1:=[B]Range("H2")[/B], Order1:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub
 
Helaas nog hetzelfde probleem.

22 dagen komt tussen 5 en 2 dagen te zitten.

Wellicht zou je een bestand welke de knop goed werkt kunnen bijvoegen voor me?
 
Dit werkt wel, maar je moet eerst natuurlijk Looptijd offerte terugplaatsen in H2 en de formule uit H3 doorvoeren naar beneden.

Code:
Private Sub CommandButton1_Click()
    Range("G2:H10").Sort Key1:=Range("G2"), Order1:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub

Wigi
 
Ik heb hem nu iets anders gesorteerd volgens mij. Namelijk op datum. Het is immers zo dat de datum die het verste weg ligt automatisch de langstlopende order is.
 
Dat is dus exact wat ik voorstelde: Key1:=Range("G2")
 
Ow sorry. Dan heb ik dat niet helemaal goed begrepen.

Ik kan alleen maar zeggen: Wigi, weer super bedankt voor je hulp !!:thumb: :cool:
 
De datum sorteren werkt goed.

Echter wanneer ik het werkblad beveilig moet ik beide kolommen (datum offerte & looptijd offerte) ontgrendelen, anders werkt mijn macro niet meer.

Eigenlijk wil ik dat de looptijd offerte niet gewijzigd mag worden en dus beveiligd

Is dit mogelijk ? (liefst zonder VBA)
 
Ik heb het een en ander opgezocht over macro's etc

Nu moet ik er dus voor zorgen dat op het moment dat de macro gebruikt wordt de beveiliging tijdelijk opgeheven moet worden.

Nu kwam ik uit op het volgende

Code:
Sub ModifyProtectedSheet()
    ActiveSheet.Unprotect Password:="test"

 

    ActiveSheet.Protect Password:="test", _
      DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
   Private Sub CommandButton1_Click()
  Range("G3:H35").Select
    Range("G3:H35").Sort Key1:=Range("G3"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

End Sub

Echter werkt dit niet helemaal.
Moet ik dan het gedeelte van Private Sub op een andere plaats zetten?
 
Laatst bewerkt:
Oke, weggehaald.

Even ter verduidelijking. Dat staat dus niet in mijn macro. "['code]"
 
Werkt dit?

Code:
Private Sub CommandButton1_Click()
    ActiveSheet.Unprotect Password:="test"
   Range("G3:H35").Sort Key1:=Range("G3"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
 
Ja, dat werkt

Dus ik moet deze regel in het vervolg bij een macro erbij plakken

" ActiveSheet.Unprotect Password:="test""
En op het laatst dat ie hem weer protect?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan