GoSub...Return Statement |
GoSub label ... label: ... Return
label
Use: Required
Subroutine name.
Passes execution to and returns from a subroutine within a procedure.
GoSub and its counterpart, Return, must reside within the same procedure. This means you can't use GoSub to "call" a subroutine from within another procedure.
A subroutine can contain any number of Return statements.
Return causes execution to continue with the code immediately following the last executed GoSub.
The only reason I've included this relic of the past here is to help if you have the misfortune of maintaining or updating legacy code (and by legacy, I mean VB1 or 2!). A program written in VB3 onward shouldn't contain a single GoSub. If you come across a GoSub, split the code into its own Sub procedures, or, better still, create a new function procedure containing the code within the GoSub. Even if you aren't going to use a return value now, cast the return value of the function as a Boolean; this is good programming practice and allows early error trapping within your code.
Old code
Private Sub Command1_Click() Dim iSomething As Integer Dim strOther As String GoSub AnOldGosub GoSub AnOlderGosub GoSub AnotherGosub Exit Sub AnOldGosub: Dim x As Integer For x = 1 To 10 iSomething = iSomething + 1 Next x Return AnOlderGosub: Dim y As Integer For y = 1 To 10 strOther = strOther & "=" Next y Return AnotherGosub: Printer.Print strOther Printer.Print iSomething Printer.EndDoc Return End Sub
New code
Private Sub Command2_Click() Printer.Print GetOther() Printer.Print GetSomething() Printer.EndDoc End Sub Private Function GetSomething() As Integer Dim x As Integer For x = 1 To 10 iSomething = iSomething + 1 Next x GetSomething = iSomething End Function Private Function GetOther() As String Dim y As Integer For y = 1 To 10 strOther = strOther & "=" Next y GetOther = strOther End Function