If Statement to Run Macro

gheyman

Well-known Member
Joined
Nov 14, 2005
Messages
2,347
Office Version
  1. 365
Platform
  1. Windows
Kind of an If statement.

I have an If statement that depending on the results will run one or another Macro. But I get a Debug error when I try to run it. The fist is the If statement that errors the second is one of the Macro's (which runs fine on its own - its in a module)

Code:
Private Sub Frame244_Click()
Select Case Frame244
    Case Is = 1
'run Macro
        updateQuery1
    Case Is = 2
'run Macro
        updateQuery2
End Select
End Sub

Code:
Private Sub updateQuery1()
    Dim db As DAO.Database
    Set db = CurrentDb
    Dim qdf As DAO.QueryDef
    
    Set qdf = db.QueryDefs("qry_NIS_TSL")
    qdf.SQL = "SELECT tbl_NIS_TSL.ID_NISTSL, tbl_NIS_TSL.VendorName, tbl_NIS_TSL.VendorID, tbl_NIS_TSL.CityName, tbl_NIS_TSL.MailState, tbl_NIS_TSL.PostalCode, tbl_NIS_TSL.CountryCode, tbl_NIS_TSL.Vendor_Status, tbl_NIS_TSL.CommType, tbl_NIS_TSL.Debarred, tbl_NIS_TSL.Approval_Status, tbl_NIS_TSL.TSL_Trend, tbl_NIS_TSL.Complexity_Low, tbl_NIS_TSL.Complexity_Medium, tbl_NIS_TSL.Complexity_High, tbl_NIS_TSL.Volume_Low, tbl_NIS_TSL.Volume_Medium, tbl_NIS_TSL.Volume_High, tbl_NIS_TSL.Responsiveness_Rating, tbl_NIS_TSL.RTV_Support, tbl_NIS_TSL.Failure_Analysis, tbl_NIS_TSL.Other_Capabilities, tbl_NIS_TSL.NumberOf_Assemblies, tbl_NIS_TSL.Materials, tbl_NIS_TSL.Restrictions, tbl_NIS_TSL.Comments, tbl_NIS_TSL.CreatedBy, tbl_NIS_TSL.CreatedDate " & _
    "FROM tbl_NIS_TSL INNER JOIN SubQry_NIS_TSL ON (tbl_NIS_TSL.VendorName = SubQry_NIS_TSL.VendorName) AND (tbl_NIS_TSL.CommType = SubQry_NIS_TSL.CommType) AND (tbl_NIS_TSL.CreatedDate = SubQry_NIS_TSL.MaxOfCreatedDate)" & _
    "WHERE (((tbl_NIS_TSL.VendorName) Like [Forms]![frm_NIS_TSL]![Combo227]) And ((tbl_NIS_TSL.CommType) Like [Forms]![frm_NIS_TSL]![Combo232]) And ((tbl_NIS_TSL.Debarred) Like [Forms]![frm_NIS_TSL]![Combo229]) And ((tbl_NIS_TSL.Approval_Status) Like [Forms]![frm_NIS_TSL]![Combo234]))ORDER BY tbl_NIS_TSL.VendorName, tbl_NIS_TSL.CreatedDate DESC;"
End Sub

thanks for the help
 
Last edited:

Excel Facts

Which lookup functions find a value equal or greater than the lookup value?
MATCH uses -1 to find larger value (lookup table must be sorted ZA). XLOOKUP uses 1 to find values greater and does not need to be sorted.
Re: Access: If Statement to Run Macro

If the two code blocks you posted above are in DIFFERENT modules, then you need to remove the word "Private" from:
Code:
[COLOR=#ff0000]Private [/COLOR]Sub updateQuery1()
Marking it as "Private" means that it cannot be seen by anything outside of that module it is contained in. You cannot call things that you cannot see.

Sometimes, people will replace the word "Private" with "Public", but I think if you leave the word off altogether, the default is "Public".
 
Last edited:
Upvote 0
Re: Access: If Statement to Run Macro

Marking it as "Private" means that it cannot be seen by anything outside of that module it is contained in. You cannot call things that you cannot see.
You can call a private macro from another module by using "application.run".

Application.Run "ModuleName.MacroName"
 
Last edited:
Upvote 0
Re: Access: If Statement to Run Macro

You can call a private macro from another module by using "application.run".

Application.Run "ModuleName.MacroName"

Think this is referring to Excel, Macros are a different object in Access, furthermore, I don't think this works with Access subroutines.
 
Last edited:
Upvote 0
Re: Access: If Statement to Run Macro

Thank You!

Is there a way to set the Frame value to 1 other than using the default value?
 
Upvote 0
Re: Access: If Statement to Run Macro

Is there a way to set the Frame value to 1 other than using the default value?
Yes, go into the Properties of the Frame, and you can rename it (as long as you choose a name that isn't already being used on that Form).
 
Upvote 0
Re: Access: If Statement to Run Macro

Think this is referring to Excel, Macros are a different object in Access, furthermore, I don't think this works with Access subroutines.

No you can do it, do not even need the Application.Run, just use ModuleName.SuborFunctionName if the code is marked Private.

HTH
 
Upvote 0
Re: Access: If Statement to Run Macro

No you can do it, do not even need the Application.Run, just use ModuleName.SuborFunctionName if the code is marked Private.

HTH


In Access 2016 this doesn't work. I have tested it as per the OP's scenario, without the private statement it works fine, with the private statement the following error is returned.

---------------------------
Microsoft Visual Basic for Applications
---------------------------
Compile error:


Method or data member not found
---------------------------
OK Help
---------------------------
 
Upvote 0
Re: Access: If Statement to Run Macro

Hmm, strange.:confused:

I did test in 2007 before I posted, as I was keen to know.
Good to know though. Thank you.
 
Upvote 0

Forum statistics

Threads
1,224,822
Messages
6,181,165
Members
453,021
Latest member
Justyna P

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top