How to use GoTo statement in VBA?

The GoTo statement in VBA (Visual Basic for Applications) is a control flow statement that allows you to jump to another line in the procedure. This statement can be used to transfer control to a specific line label within the same procedure. While GoTo can be useful in certain scenarios, such as error handling, it’s generally advised to use it sparingly to maintain the readability and maintainability of your code.


GoTo LineLabel
  • LineLabel: A label in the procedure that marks the destination for the jump. It is followed by a colon (:).
  • [statements]: The lines of code that will be executed after the jump.


Here’s an example to illustrate the use of GoTo:

Sub ExampleGoTo()
    Dim number As Integer
    number = 5

    If number < 10 Then
        GoTo LessThanTen
        GoTo TenOrMore
    End If

    Exit Sub

    MsgBox "Number is less than 10"
    GoTo ExitHere

    MsgBox "Number is 10 or more"
    GoTo ExitHere
End Sub

In this example, the GoTo statement directs the flow of execution to different parts of the code based on the value of number.

Key Points:

  • Error Handling: One of the most common and appropriate uses of the GoTo statement in VBA is in error handling, with the On Error GoTo pattern.
  • Maintainability: Excessive use of GoTo can lead to code that is difficult to read and maintain, often referred to as “spaghetti code.” It’s recommended to use structured control statements like If…Then…Else, Select Case, loops, and procedure calls wherever possible.
  • Labels: Every GoTo statement must have a corresponding label in the same procedure. Labels are case-insensitive and must be unique within the procedure.
  • Jump Limitations: You cannot use GoTo to jump out of a function or subroutine. The label must be within the same procedure.
  • Debugging: Code with many GoTo statements can be harder to debug due to the non-linear flow of control.

In summary, while the GoTo statement can be useful in certain situations, especially in error handling, it’s generally best to use more structured and conventional control flow constructs in VBA to enhance code clarity and maintainability.

Switch the language


Unlock Your Potential


Basic - Advanced


Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project

Leave a Reply

Your email address will not be published. Required fields are marked *