मैक्रो को सक्रिय करने में असमर्थ जब सूत्र के माध्यम से सक्रिय सेल परिवर्तन

वोट
0

मेरा उद्देश्य है जब सेल बी 2 में परिवर्तन (फ़िल्टरिंग मापदंड का एक हिस्सा) उन्नत फ़िल्टर मैक्रो को गति प्रदान करने के लिए है। बी 2 अन्य कक्ष (एक और वर्कशीट में) जो गतिशील रूप से बाहरी स्रोतों से डेटा हो जाता है से जुड़ा हुआ है। समस्या मैं का सामना करना पड़ रहा है कि मैक्रो अपने आप सक्रिय नहीं करता है। केवल जब मैं मैन्युअल रूप से बी 2 में कुछ बदलने मैक्रो सक्रिय है। अन्यथा पुराने मापदंड जगह में बनी हुई है। G1 को A1 7 श्रेणियां हैं और A2-G2 फिल्टर के लिए आदानों है। प्रभावी रूप से केवल बी 2 बदल जाता है। मैं तो इस कोड के सबसे वेबसाइटों से कॉपी और मेरे कार्यपुस्तिका के लिए संशोधित किया गया है इससे पहले कि VBA में कोडित नहीं किया है। नीचे मेरी कोड है। इस पर किसी भी मदद की सराहना।

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
09/10/2019 को 12:59
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

शायद सबसे आसान ठीक कोशिकाओं है कि अपने सेल बी 2 पर मूल्य उत्पन्न तहत Worksheet_Change घटना जगह, के रूप में सूत्र मूल्यों में परिवर्तन घटना बदलें को चालू नहीं करते ... होगा या आप इसके बजाय Worksheet_Calculate घटना को बदल सकते हैं, यह होगा के रूप में नीचे दिए गए सूत्र परिणामों में परिवर्तन लेने:

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
09/10/2019 को 13:20
का स्रोत उपयोगकर्ता

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