যখন কোডটি দীর্ঘ হয় এবং VBA ম্যাক্রো কয়েক সেকেন্ডের জন্য চলে, তখন Excel হিমায়িত বা প্রতিক্রিয়াহীন দেখাতে পারে। কোডটি সঠিকভাবে কাজ করলেও, ব্যবহারকারীরা ধরে নিতে পারেন ওয়ার্কবুকটি হিমায়িত হয়েছে কারণ স্ক্রিনে কিছুই ঘটছে বলে মনে হচ্ছে না। এই সমস্যা এড়ানোর একটি সহজ উপায় হল এক্সেলের স্ট্যাটাস বারে ম্যাক্রো চলাকালীন একটি লাইভ বার্তা প্রদর্শন করা।
এই টিউটোরিয়ালে, আমরা দেখাব কিভাবে VBA চলাকালীন একটি অগ্রগতি বার্তা প্রদর্শন করতে হয়। আপনি একটি UserForm বা একটি গ্রাফিকাল অগ্রগতি বার প্রয়োজন নেই. অনেক ক্ষেত্রে, Application.StatusBar যথেষ্ট।
কেন Application.StatusBar ব্যবহার করবেন?
এক্সেলের অ্যাপ্লিকেশন উইন্ডোর নীচে একটি অন্তর্নির্মিত স্ট্যাটাস বার রয়েছে। VBA অস্থায়ীভাবে একটি কাস্টম বার্তা দিয়ে সেই এলাকার সাধারণ পাঠ্য প্রতিস্থাপন করতে পারে।
এর মানে হল আপনার ম্যাক্রো আপডেটগুলি প্রদর্শন করতে পারে যেমন:
- প্রসেসিং সারি 100 এর মধ্যে 10
- ডেটা আমদানি করা হচ্ছে...
- সূত্র লেখা…
- 65% সম্পূর্ণ
এটি দরকারী যখন আপনি ব্যবহারকারীদের জানতে চান যে ম্যাক্রো এখনও চলছে কিন্তু একটি সম্পূর্ণ ভিজ্যুয়াল প্রগ্রেস বার তৈরির অতিরিক্ত কাজ চান না। আপনি এখনও সারি সংখ্যা বা শতাংশ দেখিয়ে বার্তাটিকে আরও তথ্যপূর্ণ করতে পারেন, তবে এটি একটি পাঠ্য-ভিত্তিক সমাধান থেকে যায়৷
মৌলিক সিনট্যাক্স:
এক্সেল স্ট্যাটাস বারে একটি বার্তা দেখানোর জন্য, ব্যবহার করুন:
Application.StatusBar = "Processing..."
আপনার ম্যাক্রো শেষ হয়ে গেলে, এর সাথে স্ট্যাটাস বার রিসেট করুন:
Application.StatusBar = False
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 এক্সেলকে স্ক্রীন রিফ্রেশ করতে এবং ম্যাক্রো চলাকালীন প্রতিক্রিয়া জানাতে দেয়
- এটি ছাড়া, ম্যাক্রো শেষ না হওয়া পর্যন্ত স্ট্যাটাস বার দৃশ্যত আপডেট নাও হতে পারে, বিশেষ করে লম্বা লুপে
- প্রয়োজন না হলে এটিকে খুব বড় লুপে ব্যবহার করবেন না, কারণ এটি কার্য সম্পাদনকে কিছুটা ধীর করে দিতে পারে
নীচে, স্ট্যাটাস বার দেখায় "প্রসেসিং সারি 90 এর মধ্যে 101" .

একটি শতাংশ বার্তা যোগ করুন
আপনি একটি শতাংশ অন্তর্ভুক্ত করার জন্য অগ্রগতি বার্তা কাস্টমাইজ করতে পারেন। আপনাকে শুধু শতাংশ গণনা করতে হবে এবং স্ট্যাটাস বার টেক্সটে এটি অন্তর্ভুক্ত করতে হবে।
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
এই কোডটি ব্যবহারকারীর জন্য একটি স্পষ্ট স্থিতি আপডেট তৈরি করে, "প্রসেসিং সারি 14 এর 100 (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
এটি একটি সাধারণ উদাহরণ, কিন্তু এটি অনেক ব্যবহারকারী যে ধরনের কার্যপত্রক কার্য সম্পাদন করে তা ঘনিষ্ঠভাবে প্রতিফলিত করে৷
একটি পাঠ্য-ভিত্তিক "জাল অগ্রগতি বার"
Application.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
যখনই আপনি VBA চালাবেন, স্ট্যাটাস বারটি এরকম কিছু প্রদর্শন করবে:
প্রগতি:[||||||||||……….] 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
এই প্যাটার্নটি বাস্তব-বিশ্ব ব্যবহারের জন্য আরও উপযুক্ত৷
৷বেটার স্ট্যাটাস মেসেজের জন্য টিপস
একটি ভাল স্ট্যাটাস বার বার্তা সংক্ষিপ্ত এবং নির্দিষ্ট হওয়া উচিত। আপনার বার্তা সংক্ষিপ্ত এবং দরকারী রাখুন. ভাল উদাহরণ অন্তর্ভুক্ত:
- বিক্রয় ডেটা আমদানি করা হচ্ছে...
- ডুপ্লিকেট চেক করা হচ্ছে...
- ওয়ার্কশীট ফরম্যাটিং…
- ২০০টির মধ্যে ৪৫টি রেকর্ড প্রক্রিয়াকরণ…
- রিপোর্ট চূড়ান্ত করা হচ্ছে...
বার্তাটিকে বাস্তব কাজের সাথে মেলানোর চেষ্টা করুন। এটি ম্যাক্রোকে আরও পেশাদার এবং বিশ্বাস করা সহজ করে তোলে৷
পুনঃব্যবহারযোগ্য প্যাটার্ন ব্যবহার করার জন্য প্রস্তুত
আপনি প্রায় যেকোনো ম্যাক্রোতে এই প্যাটার্নটি পুনরায় ব্যবহার করতে পারেন। শুধু এই কোডটি অনুলিপি করুন এবং যেখানে প্রয়োজন সেখানে আপনার যুক্তি সন্নিবেশ করুন৷
৷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 চলাকালীন আপনি সহজেই একটি অগ্রগতি বার্তা প্রদর্শন করতে পারেন। আপনি যদি ব্যবহারকারীদের দেখাতে চান যে একটি VBA ম্যাক্রো এখনও কাজ করছে, তাহলে Application.StatusBar হল সহজলভ্য টুলগুলির মধ্যে একটি। এটি একটি সম্পূর্ণ অগ্রগতি বার নয়, তবে এটি প্রায়শই যথেষ্ট নয়। এই পদ্ধতিটি বাস্তবায়ন করা সহজ, নির্ভরযোগ্য, ন্যূনতম কোডের প্রয়োজন এবং দীর্ঘ-চলমান VBA পদ্ধতির সময় ব্যবহারকারীর অভিজ্ঞতাকে ব্যাপকভাবে উন্নত করে। আপনার প্রধান লুপের মধ্যে স্থিতি আপডেটগুলি রেখে এটিকে আপনার নিজস্ব ম্যাক্রোতে পরীক্ষা করুন—এটি শুধুমাত্র কয়েকটি লাইন কোড নেয়৷
সমাধান সহ বিনামূল্যে উন্নত এক্সেল ব্যায়াম পান!