• 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 wil niet sorteren... Wat doe ik fout aub?

Status
Niet open voor verdere reacties.

Gielleke25

Gebruiker
Lid geworden
12 feb 2022
Berichten
82
Hallo iedereen,

Naar aanleiding van een vorige vraag, heb ik zelf een nieuwe opzet gedaan omtrent mijn dartprogramma voor onze club.
Graag willen we alle 50 wedstrijdbladeren afdrukken voor alle leden.
In het bestand staat het tabblad "Test" hierin heb ik alle 50 wedstrijdbladeren gemaakt (naast elkaar) om dan op termijn via deze weg te kunnen afdrukken...

Echter wil ik de naamlijst van de tegenspeler alfabetisch ranglijsten, maar met mijn huidige VBA code slaag ik er niet in...
Kan iemand kijken waar het fout loopt aub?

Van harte bedankt!
Mvg,

Code:
Private Sub Worksheet_Activate()
    
    'Beveiliging verwijderen'
    ActiveSheet.Unprotect Password:="lokeren"



    'Sorteren'
    ActiveSheet.Range("F18:F18").Sort Key1:=Range("F18"), Order1:=xlAscending
    ActiveSheet.Range("P18:P67").Sort Key1:=Range("P18"), Order1:=xlAscending
    ActiveSheet.Range("Z18:Z67").Sort Key1:=Range("Z18"), Order1:=xlAscending
    ActiveSheet.Range("AJ18:AJ67").Sort Key1:=Range("AJ18"), Order1:=xlAscending
    ActiveSheet.Range("AT18:AT67").Sort Key1:=Range("AT18"), Order1:=xlAscending
    ActiveSheet.Range("BD18:BD67").Sort Key1:=Range("BD18"), Order1:=xlAscending
    ActiveSheet.Range("BN18:BN67").Sort Key1:=Range("BN18"), Order1:=xlAscending
    ActiveSheet.Range("BX18:BX67").Sort Key1:=Range("BX18"), Order1:=xlAscending
    ActiveSheet.Range("CH18:CH67").Sort Key1:=Range("CH18"), Order1:=xlAscending
    ActiveSheet.Range("CR18:CR67").Sort Key1:=Range("CR18"), Order1:=xlAscending
    ActiveSheet.Range("DB18:DB67").Sort Key1:=Range("DB18"), Order1:=xlAscending
    ActiveSheet.Range("DL18:DL67").Sort Key1:=Range("DL18"), Order1:=xlAscending
    ActiveSheet.Range("DV18:DV67").Sort Key1:=Range("DV18"), Order1:=xlAscending
    ActiveSheet.Range("EF18:EF67").Sort Key1:=Range("EF18"), Order1:=xlAscending
    ActiveSheet.Range("EP18:EP67").Sort Key1:=Range("EP18"), Order1:=xlAscending
    ActiveSheet.Range("EZ18:EZ67").Sort Key1:=Range("EZ18"), Order1:=xlAscending
    ActiveSheet.Range("FJ18:FJ67").Sort Key1:=Range("FJ18"), Order1:=xlAscending
    ActiveSheet.Range("FT18:FT67").Sort Key1:=Range("FT18"), Order1:=xlAscending
    ActiveSheet.Range("GD18:GD67").Sort Key1:=Range("GD18"), Order1:=xlAscending
    ActiveSheet.Range("GN18:GN67").Sort Key1:=Range("GN18"), Order1:=xlAscending
    ActiveSheet.Range("GX18:GX67").Sort Key1:=Range("GX18"), Order1:=xlAscending
    ActiveSheet.Range("HH18:HH67").Sort Key1:=Range("HH18"), Order1:=xlAscending
    ActiveSheet.Range("HR18:HR67").Sort Key1:=Range("HR18"), Order1:=xlAscending
    ActiveSheet.Range("IB18:IB67").Sort Key1:=Range("IB18"), Order1:=xlAscending
    ActiveSheet.Range("IL18:IL67").Sort Key1:=Range("IL18"), Order1:=xlAscending
    ActiveSheet.Range("IV18:IV67").Sort Key1:=Range("IV18"), Order1:=xlAscending
    ActiveSheet.Range("JF18:JF67").Sort Key1:=Range("JF18"), Order1:=xlAscending
    ActiveSheet.Range("JP18:JP67").Sort Key1:=Range("JP18"), Order1:=xlAscending
    ActiveSheet.Range("JZ18:JZ67").Sort Key1:=Range("JZ18"), Order1:=xlAscending
    ActiveSheet.Range("KJ18:KJ67").Sort Key1:=Range("KJ18"), Order1:=xlAscending
    ActiveSheet.Range("KT18:KT67").Sort Key1:=Range("KT18"), Order1:=xlAscending
    ActiveSheet.Range("LD18:LD67").Sort Key1:=Range("LD18"), Order1:=xlAscending
    ActiveSheet.Range("LN18:LN67").Sort Key1:=Range("LN18"), Order1:=xlAscending
    ActiveSheet.Range("LX18:LX67").Sort Key1:=Range("LX18"), Order1:=xlAscending
    ActiveSheet.Range("MH18:MH67").Sort Key1:=Range("MH18"), Order1:=xlAscending
    ActiveSheet.Range("MR18:MR67").Sort Key1:=Range("MR18"), Order1:=xlAscending
    ActiveSheet.Range("NB18:NB67").Sort Key1:=Range("NB18"), Order1:=xlAscending
    ActiveSheet.Range("NL18:NL67").Sort Key1:=Range("NL18"), Order1:=xlAscending
    ActiveSheet.Range("NV18:NV67").Sort Key1:=Range("NV18"), Order1:=xlAscending
    ActiveSheet.Range("OF18:OF67").Sort Key1:=Range("OF18"), Order1:=xlAscending
    ActiveSheet.Range("OP18:OP67").Sort Key1:=Range("OP18"), Order1:=xlAscending
    ActiveSheet.Range("OZ18:OZ67").Sort Key1:=Range("OZ18"), Order1:=xlAscending
    ActiveSheet.Range("PJ18:PJ67").Sort Key1:=Range("PJ18"), Order1:=xlAscending
    ActiveSheet.Range("PT18:PT67").Sort Key1:=Range("PT18"), Order1:=xlAscending
    ActiveSheet.Range("QD18:QD67").Sort Key1:=Range("QD18"), Order1:=xlAscending
    ActiveSheet.Range("QN18:QN67").Sort Key1:=Range("QN18"), Order1:=xlAscending
    ActiveSheet.Range("QX18:QX67").Sort Key1:=Range("QX18"), Order1:=xlAscending
    ActiveSheet.Range("RH18:RH67").Sort Key1:=Range("RH18"), Order1:=xlAscending
    ActiveSheet.Range("RR18:RR67").Sort Key1:=Range("RR18"), Order1:=xlAscending
    ActiveSheet.Range("SB18:SB67").Sort Key1:=Range("SB18"), Order1:=xlAscending


    
    'Beveiliging aanzetten'
    ActiveSheet.Protect Password:="lokeren"

End Sub
 

Bijlagen

Doet deze het wel?
Via ChatGPT.
Ik heb hem niet geprobeerd omdat ik geen vba deskundige ben.
Code:
Private Sub Worksheet_Activate()

    Dim col As Variant
    Dim colsToSort As Variant
    Dim ws As Worksheet
    
    ' Beveiliging verwijderen
    Set ws = ActiveSheet
    ws.Unprotect Password:="lokeren"
    
    ' Kolommen instellen om te sorteren
    colsToSort = Array("F", "P", "Z", "AJ", "AT", "BD", "BN", "BX", "CH", "CR", _
                       "DB", "DL", "DV", "EF", "EP", "EZ", "FJ", "FT", "GD", "GN", _
                       "GX", "HH", "HR", "IB", "IL", "IV", "JF", "JP", "JZ", "KJ", _
                       "KT", "LD", "LN", "LX", "MH", "MR", "NB", "NL", "NV", "OF", _
                       "OP", "OZ", "PJ", "PT", "QD", "QN", "QX", "RH", "RR", "SB")
    
    ' Sorteren
    For Each col In colsToSort
        ws.Range(col & "18:" & col & "67").Sort Key1:=ws.Range(col & "18"), Order1:=xlAscending
    Next col
    
    ' Beveiliging aanzetten
    ws.Protect Password:="lokeren"

End Sub
 
Maak van de formules in de te sorteren kolommen eens absolute verwijzingen.
niet =G70 maar =G$70
Aardig wat werk, dus eerst maar eens proberen op 1 kolom
 
Een zeer vreemde manier om je wedstrijdbladen af te drukken. Hoe vul je werkblad Test, toch niet met de hand? En wat was er mis met de vorige oplossing voor het printen van alle wedstrijdbladen?
 
Code:
Private Sub Worksheet_Activate()
'Beveiliging verwijderen'
    ActiveSheet.Unprotect Password:="lokeren"
'Sorteren'
   Rows("69:222").Hidden = False
     For j = 1 To 490 Step 10
      Cells(69, j).Resize(51).Sort Cells(69, j), , , , , , , True
    Next j
 Rows("69:222").Hidden = True
'Beveiliging aanzetten'
    ActiveSheet.Protect Password:="lokeren"
End Sub
 
Een zeer vreemde manier om je wedstrijdbladen af te drukken. Hoe vul je werkblad Test, toch niet met de hand? En wat was er mis met de vorige oplossing voor het printen van alle wedstrijdbladen?
De vorige oplossingen waren zeker niet mis, maar niet zo gebruiksgemakkelijk...
De bladeren worden niet frequent afgeprint of steeds dezelfde printer. Soms eens op de printer van het werk, dan eens thuis of bij een collega.

Wat betreft de code voor alle PDF's samen te voegen tot één bestand... werkt goed. Maar daarvoor is het noodzakelijk om eerst alle PDF manueel nog te openen... wat ook wat tijd vroeg...:)
 
Code:
Private Sub Worksheet_Activate()
'Beveiliging verwijderen'
    ActiveSheet.Unprotect Password:="lokeren"
'Sorteren'
   Rows("69:222").Hidden = False
     For j = 1 To 490 Step 10
      Cells(69, j).Resize(51).Sort Cells(69, j), , , , , , , True
    Next j
 Rows("69:222").Hidden = True
'Beveiliging aanzetten'
    ActiveSheet.Protect Password:="lokeren"
End Sub
De code werkt perfect...👍 super bedankt hiervoor!
Mag ik een beetje uitleg vragen hoe deze code werkt? Heb dit model van code nog niet veel gezien...
Code:
For j = 1 To 490 Step 10
      Cells(69, j).Resize(51).Sort Cells(69, j), , , , , , , True
    Next j
 
De 490 moet 491 zijn.

for j = 1 to 491

'Als de loop gestart wordt krijgt "j" de waarde 1, de volgende next krijgt "j" de waarde 11, daaropvolgend 21 enz.
Het slaat er steeds 10 over (step 10).

Cells(69, j).Resize(51).Sort Cells(69, j), , , , , , , True
'Als "j" de waarde 1 heeft, worden de cellen range("A69:A119") gesorteerd; de True staat er bij als A69 een koptekst heeft (header) en dat is in dit geval (Dartnaam).
Bij de waarde "j" is 11 worden de cellen K69:K119 gesorteerd, dan bij waarde 21 de cellen U69:U119, enz.
 
@Gielleke25
Wel geen antwoord op je vraag maar ik denk wel een antwoord op je probleem en je wensen voor de toekomst.
Ik heb een blad aangepast dat wij gebruiken om labels te printen.
Spelers op "Spelers" blad invullen Het VBA-script [knop] werkt tot 100 spelers
het blad "Wedstrijdblad" wordt gebruikt als voorbeeld voor de nieuwe spelers tabbladen
alles wordt op alfabetische volgorde gezet.
dubbele spelers krijgen een volgnummer.

Kun je hier iets mee?
 

Bijlagen

In deze versie heb ik de namen uit jouw "Beheer clubleden" gebruikt.
De cellen komen nu ook overeen E17:E68
Op deze manier kun je eenvoudig documenten koppelen.


Ik wil je een paar tips geven:

Het Excel document is top zwaar aan het worden (ruim 2mb groot)
10 zichtbare tabbladen
5 onzichtbare tabbladen
Ledenadministratie + wedstrijdschema in een document.
Een heleboel plaatjes etc., op elkaar gestapeld, om een banner te maken.

Verder krijg ik het idee dat je een door iemand anders gemaakt document aan het aanpassen bent.

Tip 1
Begin met een schone lei.
Begin zonder opsmuk
Stop geen tabbladen weg voor alles af is.

Tip 2
Maak eerst een schema met wat je wilt doen
- Excel 1 = Leden administratie
- Excel 2 = wedstrijdschema
- Excel 3 = verenigingsstatistieken
- Excel 4 = etc.
op deze manier kun je veilig met een Excel, dat klaar is, gaan werken.

Tip 3
Maak een overzicht van gemeenschappelijke zaken
Ledenlijst komt uit de administratie en wordt gebruikt in wedstrijdschema.
(Cel-verdeling ligt dan vast.)

Tip 4
Ontwerp formulieren / banners etc. die je kunt aanroepen.
Let op in tip 3 Cel-verdeling.

Tip 5
Maar zolang nog niet alles af is nog geen onnodige opmaak / opsmuk

Tip 6
Maak knoppen om VBA’s te activeren.
Hierdoor houd je controle.
 

Bijlagen

De 490 moet 491 zijn.

for j = 1 to 491

'Als de loop gestart wordt krijgt "j" de waarde 1, de volgende next krijgt "j" de waarde 11, daaropvolgend 21 enz.
Het slaat er steeds 10 over (step 10).

Cells(69, j).Resize(51).Sort Cells(69, j), , , , , , , True
'Als "j" de waarde 1 heeft, worden de cellen range("A69:A119") gesorteerd; de True staat er bij als A69 een koptekst heeft (header) en dat is in dit geval (Dartnaam).
Bij de waarde "j" is 11 worden de cellen K69:K119 gesorteerd, dan bij waarde 21 de cellen U69:U119, enz.
Bedankt voor de uitgebreide uitleg!
 
Bedankt voor u bijdrage met een nieuwe kijken voor de toekomst of eventueel andere Excel bestanden! 👍
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan