Kan Macro activeren wanneer Active cel verandert door formule

stemmen
0

Mijn doel is om het geavanceerde filter macro activeren wanneer cel B2 verandert (een deel van de filtering criteria). B2 is verbonden met een andere cel (in een ander werkblad) die dynamisch wordt gegevens uit externe bronnen. Het probleem dat ik ben geconfronteerd is dat de macro niet automatisch geactiveerd. Alleen als ik handmatig iets in B2 veranderen is de macro geactiveerd. Anders wordt de oude criteria zijn plaats blijft. A1 G1 heeft 7 categorieën en A2-G2 heeft ingangen voor het filter. Alleen B2 veranderingen effectief. Ik heb niet gecodeerd in VBA vóór dus de meeste van deze code is gekopieerd van websites en aangepast voor mijn werkmap. Hieronder is mijn code. Waardeer alle hulp op dit.

Option Explicit
 'Create variable to hold values
Dim Monitored

Sub Advanced_Filtering()
Range(A7:G730).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range(A1:G2), _
CopyToRange:=Sheets(Sheet3).Range(L1:R1)
End Sub



Private Sub Worksheet_Activate()
    Monitored = Range(B2).Value 'Read in value prior to any changes
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
     'Check target to determine if macro is triggered
    If Intersect(Target, Range(B2)) Is Nothing Then Exit Sub
     'Prevent looping of code due to worksheet changes
    Application.EnableEvents = False
     'Compare monitored cell with initial value
    If Range(B2).Value <> Monitored Then
         'Do things as a result of a change
       Call Advanced_Filtering
         'Reset Variable with new monitored value
        Monitored = Range(B2).Value
    End If
     'Reset events
    Application.EnableEvents = True
End Sub
De vraag is gesteld op 09/10/2019 om 12:59
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Waarschijnlijk is de gemakkelijkste oplossing zou zijn om de Worksheet_Change evenement plaats in het kader van de cellen die de waarde van uw cel B2 te genereren, zoals veranderingen in de formule waarden niet leiden tot de Change event ... of u kunt het veranderen om Worksheet_Calculate evenement plaats, zal dit pick-up veranderingen in de formule resultaten zoals hieronder:

Option Explicit
 'Create variable to hold values
Dim Monitored

Sub Advanced_Filtering()
    Range("A7:G730").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A1:G2"), CopyToRange:=Sheets("Sheet3").Range("L1:R1")
End Sub

Private Sub Worksheet_Activate()
    Monitored = Range("B2").Value 'Read in value prior to any changes
End Sub

Private Sub Worksheet_Calculate()
    Dim Xrg As Range
    Set Xrg = Range("B2")

    If Not Intersect(Xrg, Range("B2")) Is Nothing Then
        Application.EnableEvents = False
         'Compare monitored cell with initial value
        If Range("B2").Value <> Monitored Then
             'Do things as a result of a change
           Call Advanced_Filtering
             'Reset Variable with new monitored value
            Monitored = Range("B2").Value
        End If
         'Reset events
        Application.EnableEvents = True
    End If
End Sub
antwoordde op 09/10/2019 om 13:20
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more