VBA তে Error Handling (On Error Resume Next, On Error GoTo) গাইড ও নোট

Big Data and Analytics - এক্সেল ম্যাক্রো (Excel Macros) - Error Handling এবং Debugging Techniques
343

Error Handling VBA কোডে অত্যন্ত গুরুত্বপূর্ণ একটি অংশ, যা কোডে কোনো ত্রুটি (error) ঘটলে আপনার কোডের কার্যক্রমকে সঠিকভাবে পরিচালিত রাখে। ত্রুটি শনাক্ত না করে কোড চালানোর চেষ্টা করলে পুরো প্রোগ্রামটি থেমে যেতে পারে, যা অপ্রত্যাশিত ফলাফল তৈরি করতে পারে।

VBA তে Error Handling এর জন্য সাধারণত দুটি পদ্ধতি ব্যবহৃত হয়:

  • On Error Resume Next
  • On Error GoTo

এই পদ্ধতিগুলি কোডে ত্রুটি ঘটলে কীভাবে সাড়া দিতে হবে তা নির্ধারণ করে।


On Error Resume Next

On Error Resume Next ত্রুটি ঘটলে কোডের পরবর্তী লাইন চালিয়ে যাওয়ার জন্য ব্যবহৃত হয়। এটি ব্যবহার করা হলে কোড কোনো ত্রুটি ঘটলে তাকে উপেক্ষা করে পরবর্তী লাইনে চলে যায়। তবে, এই পদ্ধতিতে কোনো ত্রুটি শনাক্ত করা হয় না, ফলে ত্রুটির কারণ নির্ধারণ করা কঠিন হতে পারে।

উদাহরণ: On Error Resume Next

Sub ExampleOnErrorResumeNext()
    On Error Resume Next ' ত্রুটি উপেক্ষা করা হবে

    ' এখানে ডিভাইড বাই জিরো হতে পারে, কিন্তু কোড থামবে না
    Dim result As Double
    result = 10 / 0

    ' পরবর্তী কোড চালিয়ে যাবে
    MsgBox "The result is " & result
End Sub

ব্যাখ্যা:

  • On Error Resume Next দ্বারা VBA ত্রুটিকে উপেক্ষা করবে এবং কোড থামবে না। এমনকি 10 / 0 এর কারণে Division by zero ত্রুটি ঘটলেও কোড চালিয়ে যাবে।
  • এই পদ্ধতিতে, আপনি পরবর্তী কোডটি চালানোর জন্য একটি "safe" অবস্থায় থাকবেন, কিন্তু ত্রুটির জন্য নির্দিষ্ট কোনো প্রতিক্রিয়া তৈরি হয় না।

On Error GoTo

On Error GoTo ত্রুটি ঘটলে একটি নির্দিষ্ট label (যা আপনি নিজের কোডে তৈরি করেন) এ চলে যাওয়ার জন্য ব্যবহৃত হয়। এই পদ্ধতিতে, আপনি ত্রুটির কারণে কোডের একটি নির্দিষ্ট অংশে চলে যেতে পারবেন, যেখানে ত্রুটির প্রতিক্রিয়া, বার্তা বা লজিক রাখতে পারেন।

উদাহরণ: On Error GoTo

Sub ExampleOnErrorGoTo()
    On Error GoTo ErrorHandler ' যদি ত্রুটি হয়, ErrorHandler লেবেলে চলে যাবে

    ' এখানে ডিভাইড বাই জিরো হতে পারে
    Dim result As Double
    result = 10 / 0

    ' পরবর্তী কোড (এই অংশটি ত্রুটি ঘটলে চলবে না)
    MsgBox "The result is " & result
    Exit Sub ' এটি ত্রুটি না হলে কোড এখানেই থামবে

ErrorHandler:
    MsgBox "An error occurred: " & Err.Description
End Sub

ব্যাখ্যা:

  • On Error GoTo ErrorHandler: কোডে ত্রুটি ঘটলে এটি ErrorHandler লেবেলে চলে যাবে।
  • Err.Description: এটি ত্রুটির বিস্তারিত বর্ণনা প্রদর্শন করবে, যেমন "Division by zero"।
  • Exit Sub: যদি কোনো ত্রুটি না ঘটে, তবে কোডটি এখানেই থেমে যাবে।

ErrorHandler লেবেলটি ত্রুটির পরবর্তী অংশে চলে যাবে, যেখানে আপনি ত্রুটির তথ্য দেখাতে বা লজিক প্রয়োগ করতে পারবেন।


On Error GoTo 0 এবং On Error GoTo -1

  • On Error GoTo 0: এটি ত্রুটি হ্যান্ডলিং নিষ্ক্রিয় করে দেয় এবং পরবর্তী কোডে কোনো ত্রুটি ঘটলে কোড থেমে যাবে।
  • On Error GoTo -1: এটি সকল ত্রুটি হ্যান্ডলিং অপসারণ করে এবং ভুল হলে সিস্টেমের ডিফল্ট ত্রুটি হ্যান্ডলিং চালু করে।

উদাহরণ: On Error GoTo 0

Sub ExampleOnErrorGoTo0()
    On Error Resume Next ' ত্রুটি উপেক্ষা করা হবে
    Dim result As Double
    result = 10 / 0 ' এখানে ত্রুটি হবে
    MsgBox "The result is " & result ' পরবর্তী কোড চলবে
    On Error GoTo 0 ' Error Handling বন্ধ করা হবে
    result = 10 / 0 ' এখন ত্রুটি ঘটবে এবং কোড থেমে যাবে
End Sub

ব্যাখ্যা:

  • প্রথমে On Error Resume Next ব্যবহার করে ত্রুটি উপেক্ষা করা হয়, এবং তারপর On Error GoTo 0 দিয়ে ত্রুটি হ্যান্ডলিং বন্ধ করা হয়। এরপর দ্বিতীয় ত্রুটি ঘটলে কোড থেমে যাবে।

Error Handling এর উন্নত ব্যবহার

উদাহরণ ১: Error Log তৈরি করা

আপনি যদি ত্রুটি হলে তা লগ করতে চান, তবে একটি log file ব্যবহার করতে পারেন:

Sub LogError()
    On Error GoTo ErrorHandler

    ' কোডের অংশ যা ত্রুটি সৃষ্টি করতে পারে
    Dim result As Double
    result = 10 / 0

    Exit Sub

ErrorHandler:
    ' ত্রুটি লোগ ফাইলে লেখা
    Dim logFile As Integer
    logFile = FreeFile
    Open "C:\ErrorLog.txt" For Append As logFile
    Print #logFile, "Error occurred: " & Now & " - " & Err.Description
    Close logFile
    MsgBox "An error occurred and logged!"
End Sub

এখানে, যদি কোনো ত্রুটি ঘটে, তবে তা ErrorLog.txt ফাইলে লোগ করা হবে।

উদাহরণ ২: Custom Error Message

Sub CustomErrorHandling()
    On Error GoTo ErrorHandler

    ' কোডের অংশ
    Dim result As Double
    result = 10 / 0

    Exit Sub

ErrorHandler:
    MsgBox "A custom error occurred: " & Err.Description & vbCrLf & "Please check your data.", vbCritical
End Sub

এই কোডটি একটি কাস্টম ত্রুটি বার্তা প্রদর্শন করবে।


সারাংশ

VBA Error Handling ব্যবহৃত হয় ত্রুটি মোকাবেলা করার জন্য। On Error Resume Next ত্রুটিকে উপেক্ষা করে পরবর্তী লাইনে চলে যায়, যেখানে On Error GoTo ব্যবহার করে আপনি ত্রুটি হওয়ার পর একটি নির্দিষ্ট অংশে চলে যেতে পারেন। ত্রুটি হ্যান্ডলিং ব্যবহার করে আপনি ব্যবহারকারীদের জন্য আরও নির্ভরযোগ্য এবং নিয়ন্ত্রিত কোড তৈরি করতে পারেন, যা সঠিকভাবে ত্রুটির মোকাবেলা এবং প্রক্রিয়া চালিয়ে যেতে সাহায্য করবে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...