Skip to Content
Course content

6.1 Types of Errors in VBA.

When working with VBA (Visual Basic for Applications), errors can occur during the development process. These errors can prevent your code from running properly, and understanding the different types of errors is essential for troubleshooting and debugging. VBA recognizes three main types of errors:

  1. Syntax Errors
  2. Runtime Errors
  3. Logical Errors

1. Syntax Errors

Definition: A syntax error occurs when the VBA code is written incorrectly and doesn't follow the proper structure of the language. These errors are detected during the code compilation process, before the program is executed.

Common Causes:

  • Missing or misplaced punctuation (e.g., parentheses, commas, etc.)
  • Incorrect keywords or misspelled commands
  • Mismatched quotes or brackets

Example:

Sub Example()
    MsgBox "Hello World  ' Missing closing quote causes a syntax error
End Sub

In this case, the closing quote for the string is missing, which will trigger a syntax error when the code is compiled.

How to Fix: Check the code for any typos, missing punctuation, or misplaced operators. Correct the syntax so the code is logically valid.

2. Runtime Errors

Definition: A runtime error occurs while the program is running. These errors happen when the program is executing, usually due to unexpected input or other environmental issues. VBA cannot anticipate the error at compile-time, which means it only becomes apparent when the program is run.

Common Causes:

  • Division by zero
  • Attempting to reference an object that doesn't exist (e.g., accessing a worksheet that is not available)
  • File I/O operations where the file cannot be found
  • Trying to access an element outside the bounds of an array or collection

Example:

Sub DivideNumbers()
    Dim x As Integer
    x = 10 / 0  ' Division by zero causes a runtime error
End Sub

In this example, the division by zero will cause a runtime error when the code is executed.

How to Fix: You can handle runtime errors using error handling techniques (e.g., On Error statements) or check for conditions that could cause errors before they occur (e.g., checking if a variable is zero before performing a division).

3. Logical Errors

Definition: Logical errors occur when the code runs without crashing, but the results are incorrect. These errors do not produce any obvious error messages, but the output or behavior of the program is not what was intended. These errors can be the hardest to identify since they don't stop the program from running.

Common Causes:

  • Incorrect formulas or math operations
  • Misuse of variables or incorrect logic in conditional statements
  • Failure to account for certain edge cases in the program's logic

Example:

Sub CalculateDiscount()
    Dim total As Double
    Dim discount As Double
    total = 100
    discount = total * 0.1  ' Discount is calculated correctly
    MsgBox total - discount  ' Correct result
End Sub

Now consider this:

Sub CalculateDiscount()
    Dim total As Double
    Dim discount As Double
    total = 100
    discount = total * 0.1  ' Discount is calculated correctly
    MsgBox total - 0.5  ' Incorrect logic - hard-coded discount instead of calculated value
End Sub

In the second example, the logic error lies in the code where the discount is hardcoded as 0.5 instead of using the variable discount. The result would be incorrect but the program runs without any error.

How to Fix: Logical errors require thorough testing and debugging. Carefully review the logic of your code, and test different cases to identify where the logic goes wrong.

4. Handling Errors in VBA

You can handle errors more gracefully in VBA using the On Error statement to trap and respond to runtime errors.

Basic Error Handling with On Error:

Sub SafeDivision()
    On Error GoTo ErrorHandler
    Dim x As Double
    x = 10 / 0  ' This will trigger an error
    Exit Sub

ErrorHandler:
    MsgBox "Error: " & Err.Description
End Sub
  • On Error GoTo ErrorHandler: Directs VBA to jump to the ErrorHandler label if an error occurs.
  • Err.Description: Returns a description of the error, which can be displayed to the user.

5. Key Differences Between the Error Types

Type of Error Description Detected Example
Syntax Error Incorrect structure or format in the code. During code compilation Missing parentheses, incorrect keywords
Runtime Error Occurs during code execution. When the code is running Division by zero, object not found
Logical Error Code runs without error, but the output is wrong. During code execution Incorrect calculations or conditional logic

6. Summary

  • Syntax Errors: Occur when the code is not written correctly, preventing the program from compiling.
  • Runtime Errors: Happen during the execution of the code, often due to unexpected conditions like invalid input or operations.
  • Logical Errors: Occur when the code runs successfully, but the output is incorrect due to faulty logic.
  • Error Handling: Use On Error to gracefully handle runtime errors and avoid program crashes, and carefully debug for logical errors through testing and code review.

By understanding and managing the different types of errors, you can write more robust and reliable VBA code.

Commenting is not enabled on this course.