Kan ikke aktivere Macro når Aktive celleforandringer Gjennom formel

stemmer
0

Målet er å utløse den avanserte filtermakro når cellen B2 endres (som en del av filtreringskriteriene). B2 er koblet til en annen celle (i et annet regneark) som dynamisk henter data fra eksterne kilder. Problemet jeg møter er at makroen ikke aktivere automatisk. Bare når jeg endre noe i B2 er manuelt makro aktivert. Ellers de gamle kriteriene er fortsatt på plass. A1 til G1 har 7 kategorier og A2-G2 har innganger for filteret. Bare B2 endringer effektivt. Jeg har ikke kodet i VBA før så det meste av denne koden er kopiert fra nettsteder og modifisert for min arbeidsbok. Nedenfor er min kode. Setter pris på all hjelp på dette.

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
Publisert på 09/10/2019 klokken 12:59
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Sannsynligvis den enkleste løsning ville være å plassere Worksheet_Change arrangementet under celler som genererer verdien på din celle B2, som endringer i formelen verdier ikke utløse Endre hendelsen ... eller du kan endre det til Worksheet_Calculate hendelse i stedet, vil dette plukke opp endringer i formelresultater som følger:

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
Svarte 09/10/2019 kl. 13:20
kilden bruker

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