2012-06-22 27 views
7

के रूप में अक्षम करें मैं एक वीबीए फ़ंक्शन लिख रहा हूं जिसे मैं उसी दस्तावेज़ में अन्य वीबीए मॉड्यूल में सार्वजनिक रूप से उपलब्ध होना चाहता हूं, हालांकि मैं यह उपलब्ध नहीं होना चाहता हूं एक यूडीएफ (उपयोगकर्ता परिभाषित समारोह) के रूप में।वीबीए फ़ंक्शन "वीबीए केवल" कैसे बनाएं और इसे यूडीएफ

यदि मैं सार्वजनिक एक्सेस संशोधक का उपयोग करता हूं, हालांकि मेरा फ़ंक्शन यूडीएफ-फॉर्मूला के रूप में भी उपलब्ध है जिसे कार्यपुस्तिका के भीतर सेल्स से बुलाया जा सकता है। मुझे यह नहीं चाहिए।

क्या कोई एक्सेस संशोधक या अन्य तरीका है जो मुझे "वीबीए केवल" व्यवहार प्राप्त करने में मदद कर सकता है?

तरह का संबंध

+1

क्या आप इस समारोह में क्या अधिक जानकारी दे सकते हैं? यह वीबीए कक्षाओं का उपयोग करने के तरीकों का सुझाव देने में मदद कर सकता है जो केवल वीबीए हैं, और वर्कशीट से प्रारंभ नहीं किए जा सकते हैं। कम से कम अपेक्षित इनपुट तर्क आउटपुट मान के रूप में दिखाएं। – ja72

+1

फ़ंक्शन के भीतर application.caller के प्रकार का नाम देखें। इसका परीक्षण नहीं किया है, लेकिन मुझे लगता है कि यह जांचने की अनुमति देनी चाहिए कि सेल से कोई फ़ंक्शन कहा जा रहा है या नहीं। –

उत्तर

0

एक पैरामीटर है कि केवल अगर एक "जादू * मूल्य इसे करने के लिए दिया जाता है समारोह को चलाने के लिए अनुमति देता है पारित

उदाहरण -। जब तक आप जानते हैं कि यह त्रुटि #NAME! दे देंगे क्या कुंजी है:

Function VBAOnly(key As Long) 

If key <> 12345 Then 
    VBAOnly = CVErr(xlErrName) 
    Exit Function 
End If 

VBAOnly = True 

End Function 
5

यह एक #VALUE त्रुटि लौटाएगा यदि Excel में इस्तेमाल किया

। 10
+3

'xlErrName' बेहतर होगा :) – Aprillion

+0

धन्यवाद, लेकिन मुझे उम्मीद थी कि एक तंत्र मौजूद होगा जिसने फ़ंक्शनशीट को फ़ंक्शन अदृश्य बना दिया है। इस तरह फ़ंक्शन अभी भी दृश्यमान है (उदा। स्वतः पूर्ण में), यह केवल एक त्रुटि देता है। यह मेरे मन में 100% नहीं था। डिक के सुझाव पर – Skifozoa

+0

+1। KFleschner की टिप्पणी के अनुसार @ स्कीफोजोआ ने इसे 'निजी फंक्शन' – brettdj

-1

Private संशोधक का उपयोग केवल मॉड्यूल समारोह में मौजूद है में निष्पादन की अनुमति चाहिए।

+0

ऐसा नहीं है। कर्सर परीक्षण से पता चलता है कि 'निजी' फ़ंक्शन एक्सेल से पहुंच योग्य हैं। –

1

आप मॉड्यूल समारोह में प्रकट होता है, जिसमें, समारोह Public रूप में घोषित किया जा सकता है और में से किसी में प्रयोग किया जाता में Option Private Module का उपयोग करते हैं आपके वीबीए प्रोजेक्ट के भीतर आपके अन्य मॉड्यूल, लेकिन एक्सेल समेत अन्य एप्लिकेशन या प्रोजेक्ट्स द्वारा उपलब्ध नहीं होंगे।