If Statement to Run Macro

gheyman

Well-known Member
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:

Joe4

MrExcel MVP, Junior Admin
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:

petertenthije

Board Regular
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:

stumac

Active Member
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:

gheyman

Well-known Member
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?
 

Joe4

MrExcel MVP, Junior Admin
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).
 

welshgasman

Well-known Member
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
 

stumac

Active Member
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
---------------------------
 

welshgasman

Well-known Member
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.
 

Some videos you may like

This Week's Hot Topics

  • Get External Data (long shot question!)
    This is likely a long shot but I am wondering if it is at all possible for Excel to somehow 'change' the contents of a URL that is being linked to...
  • Importing multiple excel files into one spreadsheet
    Hi, I'm trying to import multiple excel files (with the same format into a single spreadsheet) so that each day's file is listed underneath the...
  • Cell Formatting
    Good Morning, I need to format a few different cells in the following manners: A1 has to always add a colon (:) after whatever is typed in by a...
  • How to copy multiple rows using If
    Hi all, I'm very new to VBA and have written this simple code to copy certain cells if a certain cell within that row contains any data. I need...
  • Workbook_Change stopped working !
    I am working on an app to speed up & automate processing of Credit Cards statements. After data is input from a CSV file, it is presented to the...
  • VBA If statement
    Dear All, I have two dates, where I'd like a message box to pop, if the dates are between this criteria. [CODE] sDate1 = #10/1/2019#...
Top