[AccessD] Dynamically calling combobox_afterupdate from form_open event
John Colby
jwcolby at gmail.com
Tue Mar 7 17:52:28 CST 2023
I am having no more success than you using the eval function. 🤕
On Tue, Mar 7, 2023 at 4:36 PM John Colby <jwcolby at gmail.com> wrote:
>
> 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
>
--
John W. Colby
Colby Consulting
More information about the AccessD
mailing list