2011-03-28 5 views
11

मुझे उपयोगकर्ता को एक संदेश प्रदर्शित करने की आवश्यकता है। जब मैं MsgBox का उपयोग करके ऐसा करता हूं, तब तक प्रोग्राम बंद हो जाता है जब तक उपयोगकर्ता बॉक्स को क्लिक नहीं करता। मैं जानना चाहता हूं कि कार्यक्रम को रोक दिए बिना MsgBox खोलने का कोई तरीका है या नहीं।एप्लिकेशन को रोक दिए बिना MsgBox का उपयोग

+2

नहीं, MsgBox हमेशा क्लिक होने तक निष्पादन रोकता है। –

+1

यह शीर्षक यह इंगित करने के लिए अद्यतन किया जाना चाहिए कि MsgBox आपके प्रश्न की आवश्यकता नहीं है।किसी समस्या से यहां आ रहा है जहां मैं उपयोगकर्ता को संवाद करने के लिए 'Application.Statusbar' का उपयोग नहीं कर सकता क्योंकि Excel पहले से ही किसी और चीज़ के लिए इसका उपयोग कर रहा है। –

उत्तर

22

लगता है जैसे आप MsgBox से किसी भी उपयोगकर्ता इनपुट की अपेक्षा नहीं कर रहे हैं। इस मामले में, आपके आवेदन के आधार पर, StatusBar पर्याप्त विकल्प हो सकता है। जब किया

Application.StatusBar = "Please be patient..." 
Application.StatusBar = iDone & " of " & iTotal & " items done." 

StatusBar साफ़ करने के लिए:

Excel में यह आसान है

Application.StatusBar = False 

पहुँच में, वाक्य रचना एक छोटा सा अधिक जटिल है:

Temp = SysCmd(acSysCmdSetStatus, "Hey, look at me!") ' Puts out your message 
Temp = SysCmd(acSysCmdClearStatus) ' Clears StatusBar 
6

जहाँ तक मैंने कभी भी खोजा है, जवाब है कि आप नहीं कर सकते हैं। कार्य-आसपास एक कस्टम रूप है जो एक संवाद बॉक्स के रूप में कार्य करता है।

http://www.mvps.org/access/forms/frm0046.htm देखें (बिल्कुल आपका प्रश्न नहीं, लेकिन लागू)।

6

MsgBox मोडल है (जिसका अर्थ है कि खिड़की आती है और इसे साफ़ होने तक कोड के निष्पादन को रोकता है)। जैसा कि अन्य पोस्टर्स/कमेंटर्स ने उल्लेख किया है - आपका विकल्प पॉपअप का अपना संस्करण लिखना है जो मोडल नहीं है। वास्तव में प्रयास के लायक नहीं है जबतक कि आपको वास्तव में इस तरह की आवश्यकता नहीं है।

+0

यह गलत है। Msgbox मोडल संवाद हैं; संवाद क्या है कोड को रोकता है। AcDialog और वास्तविक संवाद बॉक्स (MsgBox, FileDialog, आदि) का उपयोग कर केवल फॉर्म खोले गए हैं। कोई एक मॉडल या पॉपअप फॉर्म बना सकता है, जिसमें से कोई भी कोड रोक नहीं सकता है। – usncahill

1

आप WScript की पॉपअप विधि का उपयोग कर सकते हैं। यहां नमूना कोड सहित पूर्ण विवरण दिए गए हैं: http://msdn.microsoft.com/en-us/library/x83z1d9f%28v=vs.85%29.aspx

+0

मेरा मानना ​​है कि यह विकल्प उपयोगकर्ता की आवश्यकता के अनुसार कोड को जारी रखने की अनुमति नहीं देता है। यह एक मॉडल विंडो की तरह है, जैसा कि मैंने परीक्षण किया है (वीबीए/एक्सेल के लिए, कम से कम)। –

1

मेरा मानना ​​है कि आपको पहले मूल्यांकन करने की आवश्यकता है यदि आपको वास्तव में पॉप-अप करने के लिए एक संदेश बॉक्स की आवश्यकता है और आपको कोड चलाना है।

संदेश बॉक्स कार्यक्षमता (जैसा कि पहले से कहा गया है) मोडल है और आप इसे 'बाईपास' नहीं कर सकते हैं। हालांकि, आप एक फॉर्म (संदेशबॉक्स के समान) बना सकते हैं, इस फ़ॉर्म को 'मॉडल नहीं' के रूप में सेट करें और इस फ़ॉर्म को दिखाने के लिए कोड को कॉल करें। कोड वर्कफ़्लो चालू है। परीक्षण और एक्सेल में काम करता है।

अद्यतन: मेरी पहुंच ने एक संदर्भ खो दिया है, मैं अब इसका परीक्षण नहीं कर पाऊंगा। उम्मीद है कि यह एक्सेस में भी काम करता है।

Rgds

4

एक प्रपत्र के बजाय बनाएँ। मैंने एक छोटा सा फॉर्म बनाया है जिसमें केवल एक टेक्स्ट बॉक्स है जो कहता है "काम करना, कृपया प्रतीक्षा करें"। जब आवश्यक हो, तो मैं पॉप-अप (डॉक्मड ओपनफॉर्म "फॉर्म नाम") के रूप में फॉर्म खोलता हूं, आम तौर पर कुछ ऑपरेशन शुरू करने से पहले जो कुछ समय पूरा करने जा रहा है। जब काम पूरा हो जाता है तो मैं फॉर्म को बंद करता हूं (docmd close acform "form name")। यह प्रोग्राम को रोकता नहीं है लेकिन उपयोगकर्ता को "संदेश" प्रदान करता है।

3

वीबी संपादक में: सम्मिलित करें मेनू उपयोगकर्ताफॉर्म का चयन करें। टूलबॉक्स में टेक्स्टबॉक्स का चयन करें: उपयोगकर्ताफॉर्म में एक आयत खींचें और इसमें अपना टेक्स्ट टाइप करें। उपयोगकर्ताफॉर्म पर राइट क्लिक करें और गुण चुनें। शोमोडाल संपत्ति में: गलत चुनें। अपने वीबीए मॉड्यूल में UserForm1 दर्ज करें। दिखाएं कि आप इसे चालू करना चाहते हैं और UserForm1। जहां आप इसे बंद करना चाहते हैं उसे देखें। उपयोगकर्ताफॉर्म 1 मेरा है, निश्चित रूप से आपके द्वारा बनाए गए फॉर्म के लिए उपयुक्त नाम का उपयोग करें।

संबंधित मुद्दे

 संबंधित मुद्दे