Na filteren automatisch starten van een script/module

Status
Niet open voor verdere reacties.

Plannert

Gebruiker
Lid geworden
2 dec 2011
Berichten
34
Beste helpmij,

Ik ben opzoek naar een functie die ervoor zorgt dat nadat ik gesorteerd en/of gefilterd heb daarna uitgevoerd wordt. Ik ben al aan het zoeken geweest en kom uit op een Private sub met worksheet_change, wat als vba in de worksheet ingevuld wordt. Maar wat ik dan moet maken daar kom ik niet uit. Ik heb al wel een script geprobeerd dat werkt, wanneer er een bepaalde cel wordt veranderd dat er automatisch een script gaat draaien, maar dat werkt niet wanneer ik filter...

Ik hoop dat mijn probleem helder is en dat iemand een oplossing heeft.

Alvast bedankt,

Vr.gr.
Patrick
 
Visual Basic is iets anders dan Visual Basic for Applications, VBA is programmeren binnen Office applicaties. Verplaatst naar juiste sectie.
 
Je kan ergens een subtotaalfunctie neerzetten in je blad.
=SUBTOTAAL(3;A2:A10)

Na het filteren wordt de formule berekend, en kun je met de event "calculate" je script laten draaien.
Code:
Private Sub Worksheet_Calculate()
 MsgBox "code werd uitgevoerd"
End Sub
 
Laatst bewerkt:
Sorry huijb, bedankt voor het verplaatsen.

@ HSV, bedankt. Het werkt ook zonder de formule, aangezien ik ook al andere formules heb staan. Echter het werkt nu zo goed dat het script elke keer wordt gebruikt. Is het mogelijk het zo te maken, dat er alleen bij gebruik van het filter het script wordt gedraaid?

Alvast bedankt.
 
Probeer het eens met:
Code:
If filtermode then.........

Kijk in de Help van Vba even naar Filtermode.
 
HSV, met filtermode geprobeerd maar het heeft nog niet het resultaat wat ik wil. Het moet starten op het moment dat ik mijn filter/sortering gebruik. Heb je wellicht nog een ander idee :).

Alvast bedankt,

Vr.gr.
Patirck
 
Zo lukt het niet?
Code:
Private Sub Worksheet_Calculate()
 If FilterMode Then MsgBox "code werd uitgevoerd"
End Sub
 
HSV, ik had hem niet helemaal goed begrepen. Nu gedaan zoals je aangeeft, dit werkt. Echter, logischerwijs alleen als ik filter en niet als ik sorteer. Daarnaast geeft hij op een gegeven moment aan dat hij 'out of stack' is, wanneer hij bezig is in het script waar ik hem naar verwijs. Wanneer ik het script individueel laat draaien dan is er niets aan de hand.. Terwijl ik het calculeren en scherm updaten al uit heb laten zetten.
 
Test het eens.

Code:
Option Explicit
Public gelijk

Private Sub Worksheet_Calculate()
 If FilterMode Or Range("A2") <> gelijk Then MsgBox "code werd uitgevoerd"
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
 gelijk = Range("A2")
End Sub
 
HSV, dit is perfect. Het werkt met filteren en met sorteren! Nu moet ik alleen misschien de code nog aanpassen want hij blijft wel 'out of stack' aangeven... Wat is daar de oorzaak van? Het gebeurt op het moment dat ik 'mycount' gebruik.
 
Dit is het geen waar ik wil laten doen op het moment dat er gefilterd of gesorteerd wordt. En dan loop hij vast bij mycount

Code:
Sub ShadeEveryOtherRow()

Application.ScreenUpdating = False
Application.Calculation = xlManual

Dim i As Integer

[COLOR="#FF0000"]mycount = Application.CountA(Range("A:A"))[/COLOR]
Range("A7:AE" & mycount).Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
Range("A7").Select

    'Voor elke rij in de huidige selectie...


    For i = 7 To mycount
    
        'Als de rij een oneven nummer is (binnen de selectie)...
   
    n = Application.CountIf(Columns(1), Cells(i, 1))
        If Range("A" & i) = Range("A" & i + 1) And Range("A" & i) <> Range("A" & i - 1) Then
                      'Stel het patroon in op xlGray16.
            Range(Cells(i, 1), Cells(i + n - 1, 31)).Select
            c0 = Cells(i - 1, 1).Interior.ColorIndex
            If c0 = 2 Then
            Else
                With Selection.Interior
                .Color = 15263976
                End With
            End If
        Else
        End If
    Next i
    
Range("K7:K" & mycount).Select
    With Selection.Interior
    .Color = 12763842
    End With
  
Range("N7:O" & mycount).Select
    With Selection.Interior
    .Color = 12763842
    End With

Range("Q7:Q" & mycount).Select
    With Selection.Interior
    .Color = 12763842
    End With

Range("AB7:AB" & mycount).Select
    With Selection.Interior
    .Color = 12763842
    End With

Range("W7:X19").Select
    With Selection.Interior
    .Color = 65535
    End With
    
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub
 
En als je dit er eens bijzet ?
Code:
Dim mycount As Double
 
Ik krijg dan helaas weer de melding 'out of stack'. Wil dat zeggen dat er geen werkgeheugen meer over is? En wat doet 'Dim mycount As Double'? (Dan leer ik ook weer bij :))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan