TOP

VBA-पाठ 14.2. एक कस्टम फ़ंक्शन बनाना

VBA के साथ आप एक कस्टम फ़ंक्शन बना सकते हैं (जिसे User Defined Function कहा जाता है) जिसका उपयोग सामान्य फ़ंक्शंस की तरह वर्कशीट में किया जा सकता है। यह तब उपयोगी होता है जब मौजूदा Excel फ़ंक्शन पर्याप्त नहीं होते हैं।

User Defined Function (UDF) एक उपयोगकर्ता-निर्मित फ़ंक्शन है जो मानक Excel कार्यक्षमता में मौजूद नहीं है।

इस उदाहरण में, हम एक कस्टम IF फ़ंक्शन बनाएंगे जिसका उपयोग अन्य Excel फ़ंक्शन के समान, वर्कशीट पर गणना में किया जा सकता है।


(बी2) का मान प्रदर्शित करने के लिए यदि सेल (सी2) का मान ("YES") है, तो हम सूत्र =IF(C2="YES",B2,0) में IF फ़ंक्शन का उपयोग कर सकते हैं:

इस मामले में हमारा लक्ष्य एक ऐसा फ़ंक्शन बनाना है जो यह कर सके =IF(C2 की पृष्ठभूमि हरे रंग की है,B2,0) और जिसे हम इस प्रकार लिखेंगे: =IF_GREEN(C2,B2):

एक कस्टम फ़ंक्शन (UDF) बनाना

आइए अपना स्वयं का यूडीएफ फ़ंक्शन बनाना शुरू करें:

Function IF_GREEN(paid As Range, amount)
     
End Function

तर्क:

  • Paid As Range : वह सेल जिसकी हम जाँच करेंगे;
  • amount : वह मान जो हम सम्मिलित करेंगे यदि TRUE।
  • इस मामले में, यदि चेक FALSe लौटाता है, तो मान हमेशा 0 होगा, इसलिए इसके लिए कोई तर्क निर्दिष्ट करने का कोई कारण नहीं है।

    यह जांचने के लिए कि रंग सही है या नहीं, आप उस सेल का उपयोग कर सकते हैं जिसमें वह रंग है जिसकी आपको आवश्यकता है:

    Function IF_GREEN(paid As Range, amount)
    
         green_color = Sheets("Sheet1").Range("K1").Interior.color
    
    End Function
    

    लेकिन सेल पर निर्भर होने से बचने के लिए, हम बस वांछित रंग की संख्या का उपयोग करेंगे:

    Function IF_GREEN(paid As Range, amount)
    
         green_color = 5296274 'हरा
    
    End Function
    

    किसी सेल की पृष्ठभूमि रंग संख्या निर्धारित करने के लिए, सेल का चयन करें और इस मैक्रो को चलाएँ:

    Sub test_color()
         MsgBox ActiveCell.Interior.color
    End Sub
    

    अब, हमें बस IF का उपयोग करके सेल का रंग जांचना है:

    Function IF_GREEN(paid As Range, amount)
         
         Application.Volatile
         
         green_color = 5296274 'हरा
        
         If paid.Interior.color = green_color Then 'यदि सही
            IF_GREEN = amount
         Else 'यदि झूठ बोलता है
            IF_GREEN = 0
         End If
         
    End Function
    

    अब हमारा फ़ंक्शन उपयोग के लिए तैयार है।

    Application.Volatile हमें बताता है कि फ़ंक्शन अस्थिर है (जैसा कि सामान्य IF फ़ंक्शन के मामले में होता है)। इसका मतलब यह है कि हर बार मूल्य बदलने पर इसकी पुनर्गणना की जाएगी। उदाहरण के लिए, यदि आप राशि कॉलम (या वास्तव में किसी अन्य सेल) में कोई मान बदलते हैं, तो यह फ़ंक्शन पुनर्गणना किया जाएगा और अद्यतन राशि प्रदर्शित की जाएगी।

    हालाँकि, सेल भरण को बदलना वह घटना नहीं है जो पुनर्गणना को ट्रिगर करती है। एक्सेल को मानों की पुनर्गणना करने के लिए मजबूर करने के लिए, आप किसी भी खाली सेल का चयन कर सकते हैं और हटाएं पर क्लिक कर सकते हैं, या एक रीफ्रेश बटन ("Refresh") जोड़ सकते हैं जो आपके क्लिक करने पर सब कुछ रीफ्रेश कर देगा:

    Sub refresh_macro()
         Application.Calculate
    End Sub
    

    इसके अतिरिक्त

    नीचे उसी फ़ंक्शन को लिखने का संक्षिप्त तरीका दिया गया है:

    Function IF_GREEN(paid As Range, amount)
         Application.Volatile
         IF_GREEN = 0 'यदि झूठ बोलता है
         If paid.Interior.color = 5296274 Then IF_GREEN = amount 'यदि सही
    End Function
    

    आप यहां क्लिक करके इस उदाहरण वाली tblExceltbl फ़ाइल डाउनलोड कर सकते हैं।