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

Macro toepassen op alle tabbladen

Status
Niet open voor verdere reacties.

LWelzen

Gebruiker
Lid geworden
1 mrt 2013
Berichten
5
Hoi,

Ik heb een score tabel gemaakt waarbij een knop ervoor zorgt dat de deelnemer gerangschikt worden van hoog naar laag. Door middel van een opgenomen macro heb ik deze gekoppeld aan de knop. Nu heb ik een vijftal tabbladen (andere benaming van het tabblad) met dezelfde lijst, echter andere deelnemers.

In de macro wordt steeds verwezen naar "blad1" dus wanneer ik de macro laat uitvoeren op blad 2 werkt deze dus niet. Nu kan ik per blad een macro opnemen of herschrijven naar "blad2" maar dit is onnodig veel werk.

Is er een manier dat je de macro op alle tabbladen kan laten toepassen ongeacht de benaming van het tabblad?
Ik heb zelf vrijwel geen ervaring met macro schrijven.

Bedankt.

Ik heb de volgende macro opgenomen:


Code:
Sub sorteren()
'
' sorteren Macro
'
' Sneltoets: CTRL+r
'
    ActiveWorkbook.Worksheets("Blad1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blad1").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "C3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Blad1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Laatst bewerkt door een moderator:
Doe eens de test met deze:

Code:
Sub sorteren()
 With ActiveSheet
        .AutoFilter.Sort.SortFields.Clear
        .AutoFilter.Sort.SortFields.Add Key:=.Range("C3"), SortOn:=xlSortOnValues, Order:=xlDescending
        .AutoFilter.Sort
        .Header = xlYes
  End With
End sub
 
Code:
Sub Probeer_Dit()
    Dim i As Long
    For i = 1 To Worksheets.Count
        With Worksheets(i)
            .Range("C5").Value = "10"    '<------ Deze regel verwijderen en jouw code er in zetten
        End With
    Next i
End Sub
 
@ Cobbe,

Als ik mijn formule vervang door die van jou, krijg ik de volgende foutmelding:
Fout 438 tijdens uitvoering. Deze eigenschap of methode wordt niet ondersteund door dit object

Vervolgens wordt een gedeelte van de formule geel gemarkeerd, namelijke de 3e auto filter (zie code hieronder dik gedrukt):

Code:
Sub sorteren()
 With ActiveSheet
        .AutoFilter.Sort.SortFields.Clear
        .AutoFilter.Sort.SortFields.Add Key:=.Range("C3"), SortOn:=xlSortOnValues, Order:=xlDescending
        [B].AutoFilter.Sort[/B]
        .Header = xlYes
  End With
End Sub

@ Jolivanes, sorry ik snap niet hoe ik de code nu moet invullen. Nogmaals, ik heb weinig ervaring met het schrijven ervan.
 
Gebruik dan deze maar:

Code:
 Sub sorteren()
'
' sorteren Macro
'
' Sneltoets: CTRL+r
'
    ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blad1").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "C3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.ActiveSheet.AutoFilter.Sort
        .Header = xlYes
        .Apply
    End With
End Sub
 
Bekijk bijlage test02.xlsm Hmm, ik denk dat ik iets fout doe. Want alleen op "blad1" werkt het. Het lijkt ook of in de formule alleen naar "blad1" wordt verwezen?

Sorry dat het nog steeds niet lukt, en jullie bedankt voor de snelle reacties:).
In de bijlage een bestandje, niet het originele i.v.m. persoonlijke gegevens, maar principe is gelijk.
 
Je hoeft je niet te excuseren, klein misverstand.

Deze zal dan wel werken:

Code:
Sub sorteren()
  For i = 1 To Sheets.Count
    ActiveWorkbook.Sheets(i).AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Sheets(i).AutoFilter.Sort.SortFields.Add Key:=Sheets(i).Range( _
        "C3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Sheets(i).AutoFilter.Sort
        .Header = xlYes
        .Apply
    End With
  Next
End Sub
 
Hij geeft nu de foutmelding:
Fout 91. Objectvariabele of blokvariabele With is niet ingesteld.

Dan verwijst hij naar de 3e regel in de formule:

Sub sorteren()
For i = 1 To Sheets.Count
ActiveWorkbook.Sheets(i).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Sheets(i).AutoFilter.Sort.SortFields.Add Key:=Sheets(i).Range( _
"C3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Sheets(i).AutoFilter.Sort
.Header = xlYes
.Apply
End With
Next
End Sub
 
Zoek de verschillen.
Code:
 Sub sorteren()
'
' sorteren Macro
'
' Sneltoets: CTRL+r
'
    ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Clear
'    ActiveWorkbook[COLOR="#FF0000"].Worksheets("Blad1")[/COLOR].AutoFilter.Sort.SortFields.Add Key:=Range( _
    ActiveWorkbook.[COLOR="#FF0000"]ActiveSheet[/COLOR].AutoFilter.Sort.SortFields.Add Key:=Range( _
        "C3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.ActiveSheet.AutoFilter.Sort
        .Header = xlYes
        .Apply
    End With
End Sub
 
Als jouw code op een blad werkte, dan zou dit op alle bladen moeten werken dacht ik.
Als dat niet zo is, voeg je werkbook toe bij je vraag.

Code:
Sub Probeer_Dit()
    Dim i As Long
    For i = 1 To Worksheets.Count
        With Worksheets(i)
            .AutoFilter.Sort.SortFields.Add Key:=Range( _
                "C3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                    xlSortNormal
            With AutoFilter.Sort
                .Header = xlYes
                .Apply
            End With
        End With
    Next i
End Sub
 
Code:
Sub Sorteren()
    With ActiveSheet
        .AutoFilter.Sort.SortFields.Clear
        .AutoFilter.Sort.SortFields.Add Key:=.Range("C3"), _
                SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With .AutoFilter.Sort
            .Header = xlYes
            .Apply
        End With
    End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan