[AccessD] Dynamically calling combobox_afterupdate from form_open event
John Colby
jwcolby at gmail.com
Tue Mar 7 15:36:54 CST 2023
https://stackoverflow.com/questions/1072075/call-a-vba-function-into-a-sub-procedure
>From that it appears that you need to change the private declaration for
the event sink to public.
After that I did the following:
Create a module and generate two functions:
Function CallIt(str As String)
Dim frm As Form
Set frm = Forms("FrmLocation")
frm.Form_Current
End Function
Function CallIt2(str As String)
'Call Forms("frmLocation").Form_Current
Call Forms("frmLocation").txtName_AfterUpdate
End Function
Both of these work IF the event sink is public.
You can now call these functions from anywhere including from inside of the
form. Pass the event name into the function and mess around with using
that passed in string. Like trying your eval() thingie.
Hey you gotta do some of the work! ;)
On Mon, Mar 6, 2023 at 2:03 PM Ryan W <wrwehler at gmail.com> wrote:
> I have a form that takes openargs, the openargs are such as:
>
> cbxJobID|12345
>
>
> The key/pair set can be repeated.. the key is the control name, the other
> is the data to input into the control name
>
> my form open event is as such:
>
> Private Sub Form_Open(Cancel As Integer)
> Dim l As Long: l = 0
> Dim strArgs() As String
> If IsNull(Me.OpenArgs) Then Exit Sub
>
> strArgs = Split(Me.OpenArgs, "|")
> For l = 0 To UBound(strArgs) Step 2
> Me(strArgs(l)) = strArgs(l + 1)
> Call Eval(strArgs(l) & "_AfterUpdate")
> Next l
>
> End Sub
>
>
>
> The problem I'm having is the "Call Eval()" part. I get an error:
> "Run-Time error '2482':
> Cannot find name 'cbxJobID_AfterUpdate' you entered in the expression.
>
> However that exists. I've tried making it a public sub, private sub,
> public or private function.
>
> None of it seems to work. Maybe it can't be a form level function/sub, has
> to be module level?
>
> The microsoft documentation under examples shows the method I'm using is
> supported:
>
> https://learn.microsoft.com/en-us/office/vba/api/access.application.eval
>
>
> The following example assumes that you have a series of 50 functions
> defined as A1, A2, and so on. This example uses the *Eval* function to call
> each function in the series.
> Sub CallSeries()
>
> Dim intI As Integer
>
> For intI = 1 To 50
> Eval("A" & intI & "()")
> Next intI
>
> End Sub
>
>
> So, something is missing here... can anyone clue me in?
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> https://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
--
John W. Colby
Colby Consulting
More information about the AccessD
mailing list