vba code automatisch opnieuw uitvoeren

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Hsb-3
  • Registratie: Mei 2018
  • Laatst online: 10-03-2023
Oké, super stom, maar ik had het al gevonden maar begreep het niet..
Dus heb nu een stukje code ingevoegd op het hoofdblad die de andere macro aanstuurt.

Sorry voor de vervuiling..



Ik heb een stukje vba code in excel om alle tabbladen automatisch te filteren op basis van de waarde van 1 cel in mijn hoofdblad.

Ik wil nu, dat als ik de waarde in deze cel (b1) verander, dat de filter automatisch over alle tabbladen wordt toegepast, zonder telkens opnieuw op "uitvoeren" te klikken in de vba editor.

Ik kan alleen niet vinden hoe ik dit zou kunnen doen.
Kan iemand me op weg helpen?

Onderstaande code werkt perfect, alleen moet ik nu dus telkens handmatig opnieuw uitvoeren en dat is niet leek-vriendelijk.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Sub apply_autofilter_across_worksheets()

    Dim ws As Worksheet

    Dim clientManager As String

    Dim lastCol As Long, lastRow As Long

    Dim filterRng As Range

 

    clientManager = Sheets("Hoofdblad").Range("B1").Value

 

    For Each ws In Worksheets

        If ws.Name <> "Hoofdblad" And ws.Visible Then

            With ws

                If .AutoFilterMode Then .AutoFilter.ShowAllData

 

                lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column

                lastRow = .Cells(Rows.Count, 1).End(xlUp).Row

 

                Set filterRng = .Range(.Cells(1, 1), .Cells(lastRow, lastCol))

                filterRng.AutoFilter 2, clientManager

            End With

        End If

    Next ws

 

End Sub

[ Voor 22% gewijzigd door Hsb-3 op 27-10-2022 13:45 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 04-10 11:14
Zoiets zou moeten werken. Deze code gaat af bij iedere wijziging in je worksheet. Vervolgens controleert hij of de wijziging in cel B1 was en roept in dat geval je eigen procedure aan

code:
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Column = 2 and Target.Row = 1 Then 
         Call apply_autofilter_across_worksheets()
    End If 
End Sub