Computer >> कंप्यूटर ट्यूटोरियल >  >> सॉफ्टवेयर >> Office

एक्सेल को उत्तरदायी रखें:वीबीए चलने के दौरान लाइव प्रगति संदेश दिखाएं

एक्सेल को उत्तरदायी रखें:वीबीए चलने के दौरान लाइव प्रगति संदेश दिखाएं

  <पी> जब कोड लंबा होता है और वीबीए मैक्रो कई सेकंड तक चलता है, तो एक्सेल रुका हुआ या अनुत्तरदायी दिखाई दे सकता है। भले ही कोड ठीक से काम कर रहा हो, उपयोगकर्ता मान सकते हैं कि कार्यपुस्तिका फ़्रीज़ हो गई है क्योंकि स्क्रीन पर कुछ भी नहीं हो रहा है। इस समस्या से बचने का एक सरल तरीका मैक्रो चलने के दौरान एक्सेल के स्टेटस बार में एक लाइव संदेश प्रदर्शित करना है।

<पी> इस ट्यूटोरियल में, हम दिखाएंगे कि वीबीए चलने के दौरान प्रगति संदेश कैसे प्रदर्शित किया जाए। आपको यूजरफॉर्म या ग्राफिकल प्रोग्रेस बार की आवश्यकता नहीं है। कई मामलों में, एप्लिकेशन.स्टेटसबार पर्याप्त है।

Application.StatusBar का उपयोग क्यों करें?

<पी> एक्सेल में एप्लिकेशन विंडो के नीचे एक अंतर्निहित स्टेटस बार होता है। VBA अस्थायी रूप से उस क्षेत्र में सामान्य पाठ को एक कस्टम संदेश से बदल सकता है।

<पी> इसका मतलब है कि आपका मैक्रो इस तरह के अपडेट प्रदर्शित कर सकता है:

  • 100 में से पंक्ति 10 को संसाधित करना
  • डेटा आयात किया जा रहा है...
  • सूत्र लिखना...
  • 65% पूर्ण
<पी> यह तब उपयोगी होता है जब आप चाहते हैं कि उपयोगकर्ता जानें कि मैक्रो अभी भी चल रहा है लेकिन पूर्ण दृश्य प्रगति पट्टी बनाने का अतिरिक्त काम नहीं चाहते हैं। आप अभी भी पंक्तियों की संख्या या प्रतिशत दिखाकर संदेश को अधिक जानकारीपूर्ण बना सकते हैं, लेकिन यह एक पाठ-आधारित समाधान बना हुआ है।

<पी> बुनियादी सिंटैक्स: <पी> एक्सेल स्टेटस बार में एक संदेश दिखाने के लिए, इसका उपयोग करें:

Application.StatusBar = "Processing..."
<पी> जब आपका मैक्रो समाप्त हो जाए, तो स्टेटस बार को इसके साथ रीसेट करें:

Application.StatusBar = False
<पी> एप्लिकेशन.स्टैटसबार =गलत सेट करने से एक्सेल में स्टेटस बार का नियंत्रण बहाल हो जाता है, जिससे वह अपने डिफ़ॉल्ट संदेशों को फिर से प्रदर्शित कर सकता है। इस चरण को कभी न छोड़ें.

मूल उदाहरण:सरल प्रगति संदेश

<पी> यह सरल प्रगति संदेश वाला सबसे बुनियादी संस्करण है। स्टेटस बार में, यह "रनिंग रिपोर्ट...कृपया प्रतीक्षा करें" दिखाएगा।

Sub SimpleStatusBar() 
 Application.StatusBar = "Running report... please wait"
 
 ' Simulate work
 Dim i As Long
 For i = 1 To 50000
 ' Your processing here
 Next i
 
 Application.StatusBar = False ' Restore the status bar
 MsgBox "Done!" 
End Sub
<पी> यह काम करता है, लेकिन यह केवल एक निश्चित संदेश दिखाता है। यह उपयोगकर्ता को बताता है कि मैक्रो चल रहा है, लेकिन यह कोई वास्तविक प्रगति नहीं दिखाता है।

लूप के दौरान लाइव प्रगति दिखाएं

<पी> अधिकांश वास्तविक मैक्रोज़ में, आप पंक्तियों, कक्षों, फ़ाइलों या रिकॉर्ड्स को एक-एक करके संसाधित करते हैं। इससे लूप के आगे बढ़ने पर स्टेटस बार को अपडेट करना आसान हो जाता है।

Sub ShowLoopProgress()
 Dim i As Long
 Dim lastRow As Long
 lastRow = Cells(Rows.Count, "A").End(xlUp).Row
 For i = 2 To lastRow 
 ' Simple action
 Cells(i, "K").Value = "Processed" 
 ' Update progress message
 Application.StatusBar = "Processing row " & (i - 1) & " of " & lastRow 
 DoEvents
 Next i
 
 Application.StatusBar = False
 MsgBox "Task completed!"
End Sub
  • DoEvents एक्सेल को स्क्रीन को रीफ्रेश करने और मैक्रो चलने के दौरान प्रतिक्रिया देने की अनुमति देता है
  • इसके बिना, मैक्रो समाप्त होने तक स्टेटस बार स्पष्ट रूप से अपडेट नहीं हो सकता है, खासकर लंबे लूप में
  • जब तक आवश्यकता न हो, इसे अत्यधिक बड़े लूप में उपयोग न करें, क्योंकि यह निष्पादन को थोड़ा धीमा कर सकता है
<पी> सबसे नीचे, स्थिति पट्टी "101 में से 90 पंक्ति संसाधित हो रही है" दिखाती है .

<पी> एक्सेल को उत्तरदायी रखें:वीबीए चलने के दौरान लाइव प्रगति संदेश दिखाएं

एक प्रतिशत संदेश जोड़ें

<पी> आप प्रतिशत शामिल करने के लिए प्रगति संदेश को अनुकूलित कर सकते हैं। आपको बस प्रतिशत की गणना करने और इसे स्टेटस बार टेक्स्ट में शामिल करने की आवश्यकता है।

Sub ShowPercentageProgress()
 Dim i As Long
 Dim lastRow As Long
 Dim percentDone As Double
 lastRow = Cells(Rows.Count, "A").End(xlUp).Row
 For i = 2 To lastRow 
 ' Simple action
 Cells(i, "K").Value = "Processed" 
 ' Update progress message
 percentDone = (i - 1) / (lastRow - 1)
 Application.StatusBar = "Processing row " & (i - 1) & " of " & (lastRow - 1) & _
 " (" & Format(percentDone, "0%") & ")" 
 DoEvents
 Next i
 
 Application.StatusBar = False
 MsgBox "Task completed!"
End Sub
<पी> यह कोड उपयोगकर्ता के लिए एक स्पष्ट स्थिति अपडेट बनाता है, जो दिखाता है “100 में से पंक्ति 14 (14%) का प्रसंस्करण” .

<पी> एक्सेल को उत्तरदायी रखें:वीबीए चलने के दौरान लाइव प्रगति संदेश दिखाएं

एक सरल फॉर्मूला कार्य के साथ उदाहरण

<पी> आइए एक व्यावहारिक उदाहरण देखें जो वर्कशीट क्रिया करता है। यह संस्करण एक कॉलम में एक सरल बिक्री राशि सूत्र लिखता है।

Sub ShowProgressWithFormula()
 Dim i As Long
 Dim lastRow As Long
 Dim percentDone As Double
 lastRow = Cells(Rows.Count, "H").End(xlUp).Row
 For i = 2 To lastRow 
 ' Simple action
 Cells(i, "K").Formula = "=H" & i & "*I" & i 
 ' Update progress message
 percentDone = (i - 1) / (lastRow - 1)
 Application.StatusBar = "Writing formulas... " & _
 "Row " & (i - 1) & " of " & (lastRow - 1) & _
 " (" & Format(percentDone, "0%") & ")" 
 DoEvents
 Next i
 
 Application.StatusBar = False
 MsgBox "Formulas added in column K!"
End Sub
<पी> यह एक सरल उदाहरण है, लेकिन यह कई उपयोगकर्ताओं द्वारा किए जाने वाले वर्कशीट कार्य के प्रकार को बारीकी से दर्शाता है।

एक टेक्स्ट-आधारित "नकली प्रगति बार"

<पी> एप्लिकेशन.StatusBar वास्तविक ग्राफ़िकल प्रगति पट्टी नहीं बना सकता है। हालाँकि, आप पात्रों का उपयोग करके एक बार बनाकर उसका अनुकरण कर सकते हैं।

Sub StatusBarWithTextProgressBar()
 Dim i As Long
 Dim lastRow As Long
 Dim percentDone As Double
 Dim barLength As Integer
 Dim filledBars As Integer
 Dim progressBar As String
 lastRow = Cells(Rows.Count, "A").End(xlUp).Row
 barLength = 20
 For i = 2 To lastRow 
 Cells(i, "K").Value = "Processed" 
 percentDone = (i - 1) / (lastRow - 1)
 filledBars = Int(percentDone * barLength)
 progressBar = String(filledBars, "|") & String(barLength - filledBars, ".")
 
 Application.StatusBar = "Progress: [" & progressBar & "] " & _
 Format(percentDone, "0%") 
 DoEvents
 Next i
 
 Application.StatusBar = False
 MsgBox "Completed!"
End Sub
<पी> जब भी आप वीबीए चलाएंगे, स्टेटस बार कुछ इस तरह प्रदर्शित होगा:

<पी> प्रगति:[|||||||||………….] 67% <पी> यह अभी भी केवल पाठ है, लेकिन यह प्रगति की एक मजबूत दृश्य भावना प्रदान करता है।

<पी> एक्सेल को उत्तरदायी रखें:वीबीए चलने के दौरान लाइव प्रगति संदेश दिखाएं

सर्वोत्तम अभ्यास:स्टेटस बार को हमेशा रीसेट करें

<पी> सबसे आम गलतियों में से एक मैक्रो के अंत में स्टेटस बार को पुनर्स्थापित करना भूल जाना है। यदि आप Application.StatusBar =False का उपयोग नहीं करते हैं , मैक्रो समाप्त होने के बाद भी एक्सेल आपका कस्टम टेक्स्ट दिखाना जारी रख सकता है। एक सुरक्षित संस्करण सरल त्रुटि प्रबंधन का उपयोग करता है ताकि कुछ गलत होने पर भी स्टेटस बार रीसेट हो जाए।

Sub SafeStatusMessage()
 Dim i As Long
 Dim lastRow As Long
 Dim percentDone As Double
 On Error GoTo CleanUp
 lastRow = Cells(Rows.Count, "A").End(xlUp).Row
 For i = 2 To lastRow 
 Cells(i, "K").Value = "Processed" 
 percentDone = (i - 1) / (lastRow - 1)
 Application.StatusBar = "Processing row " & (i - 1) & " of " & (lastRow - 1) & _
 " (" & Format(percentDone, "0%") & ")" 
 DoEvents
 Next i
 
 MsgBox "Task completed!"
CleanUp:
 Application.StatusBar = False
 If Err.Number <> 0 Then
 MsgBox "Error: " & Err.Description
 End If
End Sub
<पी> यह पैटर्न वास्तविक दुनिया में उपयोग के लिए अधिक उपयुक्त है।

बेहतर स्थिति संदेशों के लिए युक्तियाँ

<पी> एक अच्छा स्टेटस बार संदेश संक्षिप्त और विशिष्ट होना चाहिए। अपने संदेश संक्षिप्त और उपयोगी रखें. अच्छे उदाहरणों में शामिल हैं:

  • बिक्री डेटा आयात करना...
  • डुप्लिकेट की जाँच हो रही है...
  • कार्यपत्रक का स्वरूपण...
  • 200 में से 45 रिकॉर्ड संसाधित हो रहा है...
  • रिपोर्ट को अंतिम रूप दिया जा रहा है...
<पी> संदेश को निष्पादित किए जा रहे वास्तविक कार्य से मिलाने का प्रयास करें। इससे मैक्रो को अधिक पेशेवर महसूस होता है और भरोसा करना आसान हो जाता है।

उपयोग के लिए तैयार पुन:प्रयोज्य पैटर्न

<पी> आप लगभग किसी भी मैक्रो में इस पैटर्न का पुन:उपयोग कर सकते हैं। बस इस कोड को कॉपी करें और जहां आवश्यक हो वहां अपना तर्क डालें।

Sub MyMacro()
 On Error GoTo CleanUp
 Dim i As Long
 Dim total As Long
 total = 100
 For i = 1 To total
 Application.StatusBar = "Processing item " & i & " of " & total
 DoEvents
 ' Your code here
 Next i
CleanUp:
 Application.StatusBar = False
End Sub

निष्कर्ष

<पी> इस ट्यूटोरियल का अनुसरण करके, आप VBA चलने के दौरान आसानी से प्रगति संदेश प्रदर्शित कर सकते हैं। यदि आप उपयोगकर्ताओं को यह दिखाना चाहते हैं कि वीबीए मैक्रो अभी भी काम कर रहा है, तो एप्लिकेशन.स्टैटसबार उपलब्ध सबसे सरल टूल में से एक है। यह पूर्ण प्रगति पट्टी नहीं है, लेकिन अक्सर यह पर्याप्त से अधिक होती है। यह दृष्टिकोण लागू करना आसान है, विश्वसनीय है, इसके लिए न्यूनतम कोड की आवश्यकता होती है, और लंबे समय तक चलने वाली वीबीए प्रक्रियाओं के दौरान उपयोगकर्ता अनुभव में काफी सुधार होता है। अपने मुख्य लूप के अंदर स्टेटस अपडेट रखकर अपने मैक्रोज़ में इसका परीक्षण करें - इसमें केवल कोड की कुछ पंक्तियाँ लगती हैं।

समाधान के साथ निःशुल्क उन्नत एक्सेल अभ्यास प्राप्त करें!
  1. विंडोज 10 में हिडन वीडियो एडिटर का उपयोग कैसे करें विंडोज 10 में हिडन वीडियो एडिटर का उपयोग कैसे करें

    विंडोज 10 विभिन्न विशेषताओं से भरा हुआ है, उनमें से एक वीडियो एडिटर है। अब आपको वीडियो संपादित करने के लिए किसी तृतीय-पक्ष सॉफ़्टवेयर का उपयोग करने की आवश्यकता नहीं है, आप वीडियो को अनुकूलित करने के लिए Windows 10 के मूल वीडियो संपादक का उपयोग कर सकते हैं। यह वीडियो एडिटिंग सॉफ्टवेयर फोटोज एप का हि

  1. नेटफ्लिक्स त्रुटि M7120-1931-500 त्रुटि को कैसे ठीक करें? नेटफ्लिक्स त्रुटि M7120-1931-500 त्रुटि को कैसे ठीक करें?

    कुछ विंडोज़ उपयोगकर्ताओं को त्रुटि M7120-1931-500 . का सामना करना पड़ रहा है जब भी वे नेटफ्लिक्स से सामग्री को स्ट्रीम करने का प्रयास करते हैं। अधिकांश प्रभावित उपयोगकर्ता इस समस्या की रिपोर्ट तब कर रहे हैं जब वे किसी ऐसे शीर्षक की स्ट्रीमिंग फिर से शुरू करने का प्रयास कर रहे हैं जिसे उन्होंने किसी

  1. Microsoft Office सक्रियण त्रुटि को ठीक करें 0x80070426 Microsoft Office सक्रियण त्रुटि को ठीक करें 0x80070426

    माइक्रोसॉफ्ट ऑफिस अपडेट और एक्टिवेशन जैसे उद्देश्यों के लिए विंडोज ऑपरेटिंग सिस्टम की तुलना में एक अलग तंत्र का उपयोग करता है। यह विभिन्न प्रक्रियाओं और सेवाओं पर इस तंत्र की संदर्भ निर्भरता लाता है। कभी-कभी Office को अद्यतन या सक्रिय करते समय, आपको एक त्रुटि संदेश प्राप्त हो सकता है: एक अनपेक्षित