खोज…


वाक्य - विन्यास

  • Debug.Print (स्ट्रिंग)
  • रुको रुको

Debug.Print

तत्काल विंडो में त्रुटि कोड विवरणों की एक सूची प्रिंट करने के लिए, इसे Debug.Print फ़ंक्शन में पास करें:

Private Sub ListErrCodes()
    Debug.Print "List Error Code Descriptions"
    For i = 0 To 65535
        e = Error(i)
        If e <> "Application-defined or object-defined error" Then Debug.Print i & ": " & e
    Next i
End Sub

आप तत्काल विंडो दिखा सकते हैं:

  • V iew का चयन | मैं मेनू बार से विंडो को mmediate करता हूं
  • कीबोर्ड शॉर्टकट Ctrl-G का उपयोग करना

रुकें

स्टॉप कमांड जब बुलाया जाता है तो निष्पादन को रोक देगा। वहां से, प्रक्रिया को फिर से शुरू किया जा सकता है या चरण दर चरण निष्पादित किया जा सकता है।

Sub Test()
    Dim TestVar as String
    TestVar = "Hello World"
    Stop                    'Sub will be executed to this point and then wait for the user
    MsgBox TestVar
End Sub

तत्काल खिड़की

यदि आप संपूर्ण उप को चलाने की आवश्यकता के बिना मैक्रो कोड की एक पंक्ति का परीक्षण करना चाहते हैं, तो आप कमांड को तत्काल विंडो में टाइप कर सकते हैं और लाइन को चलाने के लिए ENTER को हिट कर सकते हैं।

किसी पंक्ति के आउटपुट का परीक्षण करने के लिए, आप इसे प्रश्न चिह्न से पूर्व कर सकते हैं ? तत्काल विंडो पर प्रिंट करने के लिए। वैकल्पिक रूप से, आप print कमांड का उपयोग आउटपुट print करने के लिए भी कर सकते हैं।

Visual Basic Editor में, तत्काल विंडो खोलने के लिए CTRL + G । अपनी वर्तमान चयनित शीट को "ExampleSheet" में बदलने के लिए, तत्काल विंडो में टाइप करें और ENTER

   ActiveSheet.Name = "ExampleSheet"

वर्तमान में चयनित शीट के नाम को तत्काल विंडो में प्रिंट करने के लिए

? ActiveSheet.Name
ExampleSheet

यह विधि कोड में लागू करने से पहले अंतर्निहित या उपयोगकर्ता परिभाषित कार्यों की कार्यक्षमता का परीक्षण करने के लिए बहुत उपयोगी हो सकती है। नीचे दिए गए उदाहरण से पता चलता है कि किसी उम्मीद की पुष्टि करने के लिए फ़ंक्शन या श्रृंखला के आउटपुट के परीक्षण के लिए तत्काल विंडो का उपयोग कैसे किया जा सकता है।

'In this example, the Immediate Window was used to confirm that a series of Left and Right 
'string methods would return the desired string

'expected output: "value"
print Left(Right("1111value1111",9),5) ' <---- written code here, ENTER pressed
value                                  ' <---- output

तत्काल विंडो का उपयोग अनुप्रयोग, कार्यपुस्तिका या अन्य आवश्यक गुणों को सेट या रीसेट करने के लिए भी किया जा सकता है। यह उपयोगी हो सकता है यदि आपके पास Application.EnableEvents = False एक सबरूटीन में Application.EnableEvents = False है जो अप्रत्याशित रूप से एक त्रुटि फेंकता है, जिससे यह True को रीसेट किए बिना बंद हो जाता है (जिससे निराशा और अप्रत्याशित कार्यक्षमता हो सकती है। उस स्थिति में, कमांड सीधे टाइप की जा सकती हैं। तत्काल विंडो में चलाएं और चलाएं:

? Application.EnableEvents       ' <---- Testing the current state of "EnableEvents"
False                            ' <---- Output
Application.EnableEvents = True  ' <---- Resetting the property value to True
? Application.EnableEvents       ' <---- Testing the current state of "EnableEvents"
True                             ' <---- Output

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

x = Split("a,b,c",","): For i = LBound(x,1) to UBound(x,1): Debug.Print x(i): Next i '<----Input this and press enter
a '<----Output
b '<----Output
c '<----Output

प्रदर्शन में अड़चन खोजने के लिए टाइमर का उपयोग करें

गति के लिए अनुकूलन में पहला कदम कोड के सबसे धीमे वर्गों को ढूंढ रहा है। Timer VBA फ़ंक्शन विंडोज़ आधारित पीसी पर एक सेकंड (3.90625 मिलीसेकंड) की 1/256 वीं की सटीकता के साथ आधी रात के बाद से समाप्त होने वाले सेकंड की संख्या देता है। VBA कार्य Now और Time केवल एक सेकंड के लिए सटीक है।

Dim start As Double       ' Timer returns Single, but converting to Double to avoid 
start = Timer             ' scientific notation like 3.90625E-03 in the Immediate window
' ... part of the code
Debug.Print Timer - start; "seconds in part 1" 

start = Timer
' ... another part of the code
Debug.Print Timer - start; "seconds in part 2"

अपने कोड में एक ब्रेकप्वाइंट जोड़ना

आप आसानी से अपने VBA कोड की पंक्ति के बाईं ओर ग्रे कॉलम पर क्लिक करके अपने कोड में एक ब्रेकपॉइंट जोड़ सकते हैं जहां आप रोकना चाहते हैं। कॉलम में एक लाल बिंदु दिखाई देता है और ब्रेकपॉइंट कोड भी लाल रंग में हाइलाइट किया गया है।

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

यहाँ छवि विवरण दर्ज करें

डीबगर स्थानीय विंडो

लोकल विंडो आपके द्वारा चलाए जा रहे फ़ंक्शन या सबरूटीन के दायरे में चर और वस्तुओं के वर्तमान मूल्य तक आसान पहुंच प्रदान करती है। यह मुद्दों को खोजने के लिए अपने कोड को डिबग करने और परिवर्तनों के माध्यम से आगे बढ़ने के लिए एक आवश्यक उपकरण है। यह आपको उन संपत्तियों का पता लगाने की भी अनुमति देता है जिन्हें आप नहीं जानते होंगे।

निम्नलिखित उदाहरण लें,

Option Explicit
Sub LocalsWindowExample()
    Dim findMeInLocals As Integer
    Dim findMEInLocals2 As Range
    
    findMeInLocals = 1
    Set findMEInLocals2 = ActiveWorkbook.Sheets(1).Range("A1")
End Sub

VBA संपादक में, दृश्य -> स्थानीय विंडो पर क्लिक करें

जहां खिड़की पर लोकल मेन्यू है

फिर सबरूटीन के अंदर क्लिक करने के बाद F8 का उपयोग करके कोड के माध्यम से कदम बढ़ाते हुए, हमने findMeinLocals असाइन करने से पहले रोक दिया है। नीचे आप देख सकते हैं मान 0 है --- और यदि आपने इसे कभी भी मूल्य नहीं दिया है तो इसका उपयोग किया जाएगा। रेंज ऑब्जेक्ट 'नथिंग' है।

इस चरण में चर कुछ भी नहीं हैं ...

चर दिखाना कुछ भी नहीं हैं।

यदि हम सबरूटीन समाप्त होने से पहले ही रुक जाते हैं, तो हम चर के अंतिम मूल्यों को देख सकते हैं।

एक डिबग बिंदु सेट करें ... यदि आप चाहते हैं

हम 1 के मान के साथ findMeInLocals देख सकते हैं और एक प्रकार की रेंज / रेंज के साथ FindMeInLocals2। यदि हम + चिन्ह पर क्लिक करते हैं तो हम वस्तु का विस्तार कर सकते हैं और इसके गुण देख सकते हैं, जैसे कि गिनती या स्तंभ।

यहाँ छवि विवरण दर्ज करें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow