One idea is using labels, so you can "goto" at the top of your code, and then put a condition in that would skip down to the bottom if your location wasn't "All":
Sub Main_Macro(myLocation As String)
Application.ScreenUpdating = False
Select Case myLocation
Case "BU_46571"
GoTo BU_46571
Case "BU_46572"
GoTo BU_46572
End Select
'if the myLocation string was not on the list above (like if it said "All") then all locations would run from here on
Call Backup_Files
Call InsertOrderNum
BU_46571:
Workbooks.Open("File Location").Activate
Sheets("Sheet Name").Activate
Call Sort_PO_LINE
Call NewData_CopyPaste
Call VLookup
Call Del_Rows
Call MyFormatting
Call CleanUp
Set wb = Workbooks
Set Filename = ActiveWorkbook
Application.CutCopyMode = False
If ActiveWorkbook.ReadOnly Then
ActiveWorkbook.SaveAs ("File Location" & Format(Now(), " - MMM-DD-YYYY") & ".xlsx")
ActiveWorkbook.Close
Else
Workbooks("File Name").Close savechanges:=True
End If
If myLocation <> "All" Then goto the_end
BU_46572:
Workbooks.Open("File Location").Activate
Sheets("Sheet Name").Activate
Call Sort_PO_LINE
Call NewData_CopyPaste
Call VLookup
Call Del_Rows
Call MyFormatting
Call CleanUp
Set wb = Workbooks
Set Filename = ActiveWorkbook
Application.CutCopyMode = False
If ActiveWorkbook.ReadOnly Then
ActiveWorkbook.SaveAs ("File Location" & Format(Now(), " - MMM-DD-YYYY") & ".xlsx")
ActiveWorkbook.Close
Else
Workbooks("File Name").Close savechanges:=True
End If
If myLocation <> "All" Then goto the_end
'other locations with same idea
the_end:
Applicaiton.ScreenUpdating = True
End Sub
Then:
Sub Location46572()
Application.ScreenUpdating = False
Call InsertOrderNum
Call Main_Macro("BU_46572") 'when calling from main button that needs to run all locations, just make the string "All"
End Sub
Bookmarks