हालांकि यह प्रश्न थोड़ा बड़ा है, फिर भी मैं बिना किसी त्रुटि के उचित तरीका दिखाना चाहता हूं। आप इसे या तो फ़ंक्शन के माध्यम से या उप के साथ कर सकते हैं।
Sub test()
Dim MyRange As Range
testSub Application.InputBox("dada", , , , , , , 8), MyRange 'doing via Sub
Set MyRange = testFunc(Application.InputBox("dada", , , , , , , 8)) ' doing via function
If MyRange Is Nothing Then
Debug.Print "The InputBox has been canceled."
Else
Debug.Print "The range " & MyRange.Address & " was selected."
End If
End Sub
उप -तरह (अजीब) होगा:
Sub testSub(ByVal a As Variant, ByRef b As Range)
If TypeOf a Is Range Then Set b = a
End Sub
और समारोह दिखाई देगा:
आपका मुख्य प्रक्रिया कुछ इस तरह है
Function testFunc(ByVal a As Variant) As Range
If TypeOf a Is Range Then Set testFunc = a
End Function
अब बस आप जिस तरह से आप पसंद करते हैं और अप्रयुक्त लाइन को हटा दें।
यदि उप-फ़ंक्शन को कॉल करना आपको पैरामीटर को Set
करने की आवश्यकता नहीं है। उस ने कहा, इससे कोई फर्क नहीं पड़ता कि InputBox
कोई ऑब्जेक्ट देता है या नहीं। आपको बस इतना करना है कि पैरामीटर वह ऑब्जेक्ट है जिसे आप चाहते हैं या नहीं और उसके अनुसार कार्य करें।
संपादित
एक और स्मार्ट तरीका इस तरह एक संग्रह के साथ समान व्यवहार उपयोग कर रहा है:
Sub test()
Dim MyRange As Range
Dim MyCol As New Collection
MyCol.Add Application.InputBox("dada", , , , , , , 8)
If TypeOf MyCol(1) Is Range Then Set MyRange = MyCol(1)
Set MyCol = New Collection
If MyRange Is Nothing Then
Debug.Print "The inputbox has been canceled"
Else
Debug.Print "the range " & MyRange.Address & " was selected"
End If
End Sub
आप अभी भी कोई प्रश्न हैं, बस पूछना;)
समस्या नहीं है कोड की इन दो पंक्तियों में, शायद यह उन पंक्तियों में है जो उनका अनुसरण करते हैं। हमें उन पंक्तियों को दिखाएं। – RBarryYoung