ड्रॉपडाउन सूची के आधार पर पंक्तियों को दिखाने / छिपाने के लिए मैक्रो कैसे बनाऊं?


2

मैक्रो बनाने के लिए पिछली पोस्ट ( सेल मूल्य पर आधारित पंक्तियों को छिपाने या अनहाइड करने के लिए वीबीए कोड) के आधार पर कुछ सलाह का पालन करने की कोशिश की ताकि मैं ड्रॉपडाउन सूची के आधार पर कुछ पंक्तियों को दिखा / छिपा सकूं। मैं इसे पास करने के लिए बहुत करीब हूं, लेकिन मेरे सूत्र का कम से कम 1 हिस्सा काम नहीं कर रहा है। यहाँ मैं उपयोग कर रहा हूँ:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("D13").Value = "Unlimited" Then
         Rows("77").EntireRow.Hidden = True
    ElseIf Range("D13").Value = "Unlimited" Then
        Rows("78:82").EntireRow.Hidden = False
    End If
    If Range("D13").Value = "Limited" Then
        Rows("78:82").EntireRow.Hidden = True
    ElseIf Range("D13").Value = "Limited" Then
        Rows("77").EntireRow.Hidden = False
    End If
    If Range("D13").Value = "Select one" Then
        Rows("78:82").EntireRow.Hidden = False
    ElseIf Range("D13").Value = "Select one" Then
        Rows("77").EntireRow.Hidden = False
    End If
End Sub

इस फॉर्मूले के साथ, मैं प्रभावित करना चाह रहा हूं कि उपयोगकर्ता द्वारा चयन किए जाने के आधार पर ड्रॉपडाउन सूची चयन के नीचे कौन सी पंक्तियों को दिखाया गया है। ड्रॉपडाउन सूची के साथ सेल D13 है। इसके 3 संभावित मूल्य हैं: सीमित, असीमित और एक का चयन करें। यहाँ क्या Im के लिए लक्ष्य कर रहा है:

  • एक का चयन करें: 77-82 से सभी पंक्तियाँ दिखाई देती हैं
  • सीमित: पंक्ति 77 दिखाई देती है, पंक्तियाँ 78-82 छिपी हुई हैं
  • असीमित: पंक्ति 77 छिपा हुआ है, पंक्तियाँ 78-82 दिखाई दे रही हैं

मेरे पास ऊपर दिया गया कोड कुछ असंगत रूप से काम करने लगता है: निश्चित नहीं कि यदि मैंने प्रत्येक ड्रॉपडाउन के लिए जो फ़ंक्शन निर्धारित किए हैं, वे एक-दूसरे को अप्रत्याशित रूप से ओवरलैप कर रहे हैं? अभी मेरे कार्य अपेक्षित रूप से काम कर रहे हैं, जब आप चुनिंदा एक से बदल कर -> सीमित / असीमित, लेकिन मैं उन्हें काम जारी रखने के लिए नहीं पा सकता हूं यदि आप बाद में किसी अन्य चयन में बदल जाते हैं।

किसी को भी किसी की मदद की बहुत सराहना की जाएगी !! वर्तमान में इस हाहा पर मेरे बालों को थोड़ा फाड़ देना। अग्रिम में धन्यवाद :)

जवाबों:


0

नीचे दिए गए कोड में पहली पंक्ति Worksheet_Change को संभालती है। यह सुनिश्चित करता है कि केवल एक सेल को बदल दिया गया था और वह सेल D13 था।

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("D13")) Is Nothing Or Target.Cells.Count > 1 Then
        Exit Sub

    ElseIf Range("D13").Value = "Select One" Then
        Rows("77:82").EntireRow.Hidden = False

    ElseIf Range("D13").Value = "Limited" Then
        Rows("77").EntireRow.Hidden = False
        Rows("78:82").EntireRow.Hidden = True    

    ElseIf Range("D13").Value = "Unlimited" Then
        Rows("77").EntireRow.Hidden = True
        Rows("78:82").EntireRow.Hidden = False   

    End If

End Sub

ध्यान दें कि आपके ड्रॉपडाउन जो भी शीट में है, उसके लिए ऊपर दिए गए कोड को वर्कशीट ऑब्जेक्ट में कॉपी किया जाना चाहिए ।

यहाँ छवि विवरण दर्ज करें

मुझे आशा है इससे मदद मिलेगी और भाग्य आपका साथ दे।


मदद करने की कोशिश करने के लिए बहुत बहुत धन्यवाद! दुर्भाग्य से ऊपर दिए गए कोड के रूप में दर्ज किया गया है और कोई पासा नहीं है :( D13 ड्रॉपडाउन बदलने पर कुछ भी नहीं बदलता है। अगर मैं कर सकता था तो मैं आपको एक स्क्रीनशॉट
भेजूंगा

1
सुनिश्चित करें कि कोड सही जगह पर है। यह एक वर्कशीट_चेंज इवेंट पर चलता है, इसलिए कोड को शीट में होना चाहिए जहां आपका ड्रॉपडाउन है। एक मॉड्यूल में नहीं। इस वोर्कबुक ऑब्जेक्ट में नहीं।
बैंडनरैच

और मैं एक बेवकूफ हाहा, यह काम कर गया- आखिर !! बहुत बहुत धन्यवाद, मैं वास्तव में इसकी सराहना करता हूं :)
elliem

महान! मदद करने में खुशी। यदि आपको यह उत्तर मददगार लगा, तो आप इसे स्वीकार करने के लिए चेक मार्क पर क्लिक कर सकते हैं। और ऊपर की ओर त्रिभुज भी। :-)
बैंडनरैच

1
मैं इस पर हूं! और मुझे आश्वस्त करने के लिए धन्यवाद, मैं कुल
मोरन

-1

विशिष्ट पंक्तियों को छिपाने / अनहाइड करने के लिए आप इस सरल मैक्रो का उपयोग कर सकते हैं।

Private Sub Hide_Unhide()

  If Range("D13").Value = "Select One" Then
       Rows("77:82").EntireRow.Hidden = false
  End if

  If Range("D13").Value = "Limited" Then
        Rows("77").EntireRow.Hidden = false
        Rows("78:82").EntireRow.Hidden = true    

  ElseIf Range("D13").Value = "Unlimited" Then
        Rows("77").EntireRow.Hidden = true
        Rows("78:82").EntireRow.Hidden = False   

  End If

End Sub

1
धन्यवाद! दुर्भाग्य से जब तक मुझे कुछ याद नहीं आ रहा है, मुझे नहीं लगता कि यह काम किया - वही समस्या जहां पहले आप ड्रॉपडाउन आइटम के बीच नहीं जा सकते हैं और छिपी हुई पंक्तियों को बदल सकते हैं। जब तक शायद मुझे कुछ जोड़ने की ज़रूरत न हो, ताकि मैक्रो हर बार जब आप ड्रॉपडाउन को बदल दें?
इलीम

@ जेलम, हां, आपने इसे सही पाया है। आपको Worksheet_Change घटना पर चलने के लिए उप की आवश्यकता है और आपको यह सुनिश्चित करने की आवश्यकता है कि जो सेल परिवर्तित किया गया था वह वास्तव में आपका ड्रॉपडाउन था। पृष्ठ को कैसे सॉर्ट किया जाता है, इसके आधार पर नीचे या ऊपर का उत्तर देखें। :-)
बंडर्सनच

यह आसान है ,, @ जेलिअम ड्रॉप-डाउन असाइन करें सभी 3 मानदंड हैं और सेल डी 13 को इसे संलग्न करें। हर बार जब आप ड्रॉप-डाउन एक्सेल से मूल्य का चयन करते हैं, तो सेल डी 13 में प्रतिबिंबित होगा और मैक्रो उसी के अनुसार काम करेगा। दोनों उत्तर में समान कोड लाइन शामिल है जो मायने रखती है। :-)
राजेश एस

@Bandersnatch और राजेश एस मुझे खेद है कि मैंने इसे देखा है! मैं अब यह करने की कोशिश करने जा रहा हूं :) लेकिन मैंने पहले से ही आपके समाधान को Bandersnatch से ऊपर करने की कोशिश की थी। उँगलियाँ पार हो गई हालाँकि, मैं इस काम को करूँगा !! lol
elliem
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.