Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations gkittelson on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Gosub? Is it possible?

Status
Not open for further replies.

Rmck87

Programmer
Jul 14, 2003
182
US
I was wondering if there was a way to like, Gosub. Because i have three private subs, but they are all pretty much the same and what i want to do is go to a private sub to run what i want done without having to write the same code three times.

Private Sub Form_Load()

If sortbybox = 1 Then
Combo48 = ""
Combo50 = 0
Combo52 = 0
Combo60 = 0
Combo62 = 0
Me!Combo50.Enabled = False
Me!Combo52.Enabled = True
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
ElseIf sortbybox = 2 Then
Combo48 = 0
Combo50 = ""
Combo52 = 0
Combo60 = 0
Combo62 = 0
Me!Combo48.Enabled = True
Me!Combo50.Enabled = False
Me!Combo52.Enabled = True
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
ElseIf sortbybox = 3 Then
Combo48 = 0
Combo50 = 0
Combo52 = ""
Combo60 = 0
Combo62 = 0
Me!Combo48.Enabled = True
Me!Combo50.Enabled = True
Me!Combo52.Enabled = False
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
Else
Combo48 = 0
Combo50 = 0
Combo52 = 0
Combo60 = ""
Combo62 = ""
Me!Combo48.Enabled = True
Me!Combo50.Enabled = True
Me!Combo52.Enabled = True
Me!Combo60.Enabled = False
Me!Combo62.Enabled = False
End If

End Sub

Private Sub sortbybox_AfterUpdate()

If sortbybox = 1 Then
Combo48 = ""
Combo50 = 0
Combo52 = 0
Combo60 = 0
Combo62 = 0
Me!Combo48.Enabled = False
Me!Combo50.Enabled = True
Me!Combo52.Enabled = True
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
ElseIf sortbybox = 2 Then
Combo48 = 0
Combo50 = ""
Combo52 = 0
Combo60 = 0
Combo62 = 0
Me!Combo48.Enabled = True
Me!Combo50.Enabled = False
Me!Combo52.Enabled = True
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
ElseIf sortbybox = 3 Then
Combo48 = 0
Combo50 = 0
Combo52 = ""
Combo60 = 0
Combo62 = 0
Me!Combo48.Enabled = True
Me!Combo50.Enabled = True
Me!Combo52.Enabled = False
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
Else
Combo48 = 0
Combo50 = 0
Combo52 = 0
Combo60 = ""
Combo62 = ""
Me!Combo48.Enabled = True
Me!Combo50.Enabled = True
Me!Combo52.Enabled = True
Me!Combo60.Enabled = False
Me!Combo62.Enabled = False
End If

End Sub

Private Sub sortbybox_BeforeUpdate(Cancel As Integer)

If sortbybox = 1 Then
Combo48 = ""
Combo50 = 0
Combo52 = 0
Combo60 = 0
Combo62 = 0
Me!Combo48.Enabled = False
Me!Combo50.Enabled = True
Me!Combo52.Enabled = True
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
ElseIf sortbybox = 2 Then
Combo48 = 0
Combo50 = ""
Combo52 = 0
Combo60 = 0
Combo62 = 0
Me!Combo48.Enabled = True
Me!Combo50.Enabled = False
Me!Combo52.Enabled = True
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
ElseIf sortbybox = 3 Then
Combo48 = 0
Combo50 = 0
Combo52 = ""
Combo60 = 0
Combo62 = 0
Me!Combo48.Enabled = True
Me!Combo50.Enabled = True
Me!Combo52.Enabled = False
Me!Combo60.Enabled = True
Me!Combo62.Enabled = True
Else
Combo48 = 0
Combo50 = 0
Combo52 = 0
Combo60 = ""
Combo62 = ""
Me!Combo48.Enabled = True
Me!Combo50.Enabled = True
Me!Combo52.Enabled = True
Me!Combo60.Enabled = False
Me!Combo62.Enabled = False
End If
End Sub


-----------------------------------------------------------


If i didnt explain this well enough, please let me know. I'm not quite sure how to explain it though because im a noob to VBA.
 
Hi Rmck87,

Just put your code in a new Sub and call it. I haven't checked out your code in detail so I may have missed some differences:

Code:
Private Sub Form_Load()
Call NewSub
End Sub

Private Sub sortbybox_AfterUpdate()
Call NewSub
End Sub

Private Sub sortbybox_BeforeUpdate(Cancel As Integer)
Call NewSub
End Sub


Private Sub NewSub()
    If sortbybox = 1 Then
        Combo48 = ""
        Combo50 = 0
        Combo52 = 0
        Combo60 = 0
        Combo62 = 0
        Me!Combo48.Enabled = False
        Me!Combo50.Enabled = True
        Me!Combo52.Enabled = True
        Me!Combo60.Enabled = True
        Me!Combo62.Enabled = True
    ElseIf sortbybox = 2 Then
        Combo48 = 0
        Combo50 = ""
        Combo52 = 0
        Combo60 = 0
        Combo62 = 0
        Me!Combo48.Enabled = True
        Me!Combo50.Enabled = False
        Me!Combo52.Enabled = True
        Me!Combo60.Enabled = True
        Me!Combo62.Enabled = True
    ElseIf sortbybox = 3 Then
        Combo48 = 0
        Combo50 = 0
        Combo52 = ""
        Combo60 = 0
        Combo62 = 0
        Me!Combo48.Enabled = True
        Me!Combo50.Enabled = True
        Me!Combo52.Enabled = False
        Me!Combo60.Enabled = True
        Me!Combo62.Enabled = True
    Else
        Combo48 = 0
        Combo50 = 0
        Combo52 = 0
        Combo60 = ""
        Combo62 = ""
        Me!Combo48.Enabled = True
        Me!Combo50.Enabled = True
        Me!Combo52.Enabled = True
        Me!Combo60.Enabled = False
        Me!Combo62.Enabled = False
    End If
End Sub

Enjoy,
Tony

 
Usually, if a Sub doesn't require parameters, you can call it just by using its name (no quotes and no parentheses):
Code:
Private Sub Form_Load()
   ResetAll
End Sub

Private Sub sortbybox_AfterUpdate()
   ResetAll
End Sub

Private Sub sortbybox_BeforeUpdate(Cancel As Integer)
   ResetAll
End Sub

Sub ResetAll()
	‘ Do stuff. . . objects will need to be explicitly referenced using their form name or sheet name . . .
End Sub
Hope that helps!


VBAjedi [swords]
 
Thanks Guys! It worked and thats exactly what I was looking for!

-Ryan
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top