[AccessD] Dynamically calling combobox_afterupdate from form_open event

Ryan W wrwehler at gmail.com
Mon Mar 6 17:28:34 CST 2023


Thanks. That’s what I sort of figured so for now I’ve just written a case statement in my for loop to execute the proper event when needed. It’s not as slick but ya gotta do what ya gotta do

Sent from my iPhone

> On Mar 6, 2023, at 5:23 PM, Stuart McLachlan <stuart at lexacorp.com.pg> wrote:
> 
> It's probably worth noting that the example code from the MS site doesn't work if the 
> functions A1() etc are in a form module whether or not they are marked as Public
> It only works if the functions are in a standard code module.
> 
>> On 6 Mar 2023 at 13:03, Ryan W 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.ev
>> al
>> 
>> 
>> 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
>> 
> 
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> https://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com


More information about the AccessD mailing list