vba विजुअल - एक वीबीए समारोह से परिणाम कैसे वापस करें





बेसिक क्या (5)


नीचे दिया गया कोड रिटर्न वैल्यू को वेरिएबल retVal और फिर मान प्रदर्शित करने के लिए MsgBox का उपयोग किया जा सकता है:

Dim retVal As Integer
retVal = test()
Msgbox retVal

मैं फ़ंक्शन से परिणाम कैसे वापस कर सकता हूं?

उदाहरण के लिए:

Public Function test() As Integer
    return 1
End Function

यह एक संकलन त्रुटि देता है।

मैं इस फ़ंक्शन को एक पूर्णांक कैसे वापस कर सकता हूं?




वीबीए फ़ंक्शन फ़ंक्शन नाम को एक प्रकार के चर के रूप में स्वयं ही मानते हैं। तो " return " कथन का उपयोग करने के बजाय, आप बस कहेंगे:

test = 1

ध्यान दें, हालांकि, यह समारोह से बाहर नहीं टूटता है। इस कथन के बाद कोई भी कोड निष्पादित किया जाएगा। इस प्रकार, आपके पास कई असाइनमेंट स्टेटमेंट्स हो सकते हैं जो test लिए अलग-अलग मान निर्दिष्ट करते हैं, और जब भी आप फ़ंक्शन के अंत तक पहुंचते हैं तो मूल्य वापस लौटाया जाएगा।




गैर-ऑब्जेक्ट रिटर्न प्रकारों के लिए, आपको अपने फ़ंक्शन के नाम पर मान असाइन करना होगा, जैसे:

Public Function test() As Integer
    test = 1
End Function

उदाहरण का उपयोग:

Dim i As Integer
i = test()

यदि फ़ंक्शन ऑब्जेक्ट प्रकार देता है, तो आपको इस तरह के Set कीवर्ड का उपयोग करना होगा:

Public Function testRange() As Range
    Set testRange = Range("A1")
End Function

उदाहरण का उपयोग:

Dim r As Range
Set r = testRange()

ध्यान दें कि फ़ंक्शन नाम पर रिटर्न मान असाइन करना आपके फ़ंक्शन के निष्पादन को समाप्त नहीं करता है। अगर आप फ़ंक्शन से बाहर निकलना चाहते हैं, तो आपको स्पष्ट रूप से Exit Function कहना होगा। उदाहरण के लिए:

Function test(ByVal justReturnOne As Boolean) As Integer
    If justReturnOne Then
        test = 1
        Exit Function
    End If
    'more code...
    test = 2
End Function

प्रलेखन: msdn.microsoft.com/en-us/library/office/…




बस फ़ंक्शन नाम पर रिटर्न वैल्यू सेट करना अभी भी जावा (या अन्य) return स्टेटमेंट जैसा नहीं है , क्योंकि जावा में, return फ़ंक्शन से बाहर निकलता है, जैसे:

public int test(int x) {
    if (x == 1) {
        return 1; // exits immediately
    }

    // still here? return 0 as default.
    return 0;
}

वीबी में, यदि आप अपने फ़ंक्शन के अंत में रिटर्न वैल्यू सेट नहीं कर रहे हैं तो सटीक समतुल्य दो पंक्तियां लेता है। तो, वीबी में सटीक अनुशासन इस तरह दिखेगा:

Public Function test(ByVal x As Integer) As Integer
    If x = 1 Then
        test = 1 ' does not exit immediately. You must manually terminate...
        Exit Function ' to exit
    End If

    ' Still here? return 0 as default.
    test = 0
    ' no need for an Exit Function because we're about to exit anyway.
End Function 

चूंकि यह मामला है, यह जानना भी अच्छा है कि आप विधि में किसी भी अन्य चर की तरह रिटर्न वैरिएबल का उपयोग कर सकते हैं। इस कदर:

Public Function test(ByVal x As Integer) As Integer

    test = x ' <-- set the return value

    If test <> 1 Then ' Test the currently set return value
        test = 0 ' Reset the return value to a *new* value
    End If

End Function 

या, वापसी चर कैसे काम करता है इसका चरम उदाहरण (लेकिन यह वास्तव में एक अच्छा उदाहरण नहीं है कि आपको वास्तव में कैसे कोड करना चाहिए) - वह जो आपको रात में रखेगा:

Public Function test(ByVal x As Integer) As Integer

    test = x ' <-- set the return value

    If test > 0 Then

        ' RECURSIVE CALL...WITH THE RETURN VALUE AS AN ARGUMENT,
        ' AND THE RESULT RESETTING THE RETURN VALUE.
        test = test(test - 1)

    End If

End Function



माइक्रोसॉफ्ट से एक बहुत बड़ा पीडीएफ है जो vbaproject.bin से कार्यों को निकालने का दस्तावेज करता है:

http://download.microsoft.com/download/2/4/8/24862317-78f0-4c4b-b355-c7b2c1d997db/%5BMS-OVBA%5D.pdf [ Source ]

कुछ अतिरिक्त जानकारी जो उपर्युक्त के लिए माना जा सकता है या नहीं:

http://www.codeproject.com/Articles/15216/Office-2007-bin-file-format







vba excel-vba