Newsgroup: it.comp.appl.access
Titolo: Call & NomeFunzioneDinamico

Ciao a tutti, mi chiedevo, come fare a far partire una funzione il cui nome 
è costruito dinamicamente come da codice sottostante (che ovviamente non 
funzia, perchè ctl.Name & "_Click" per VBA -che non lo traduce prima-non è 
una funzione valida) :
Dim ctl As Control
For Each ctl In Me.Form.Controls
If ctl.ControlType = acLabel Then
If Left(ctl.Caption, 3) = MeMiaLabel Then
Call ctl.Name & "_Click"
End If
End If
Next ctl
-- 
-- 
Ciao
Pablitomf (Maurizio Facciuti)
-----------------------------------------------------------------
Access: 97, 2000, XP e 2003
ASP
-----------------------------------------------------------------
http://www.accessgroup.it/
-----------------------------------------------------------------
Il mio motto :
""Non mi fido molto delle statistiche, perchè un uomo con la testa nel forno
acceso e i piedi nel congelatore statisticamente ha una temperatura media." 

 Pablitomf (Maurizio Facciuti)
Hai provato :
EVAL(...)
Oppure:
Function CallByName(Object As Object, ProcName As String, CallType As
VbCallType, Args() As Variant)
    Membro di VBA.Interaction
;-)
@Alex

VbCallType, Args() As Variant)
 >   Membro di VBA.Interaction
Funzione valida da Office 2007... io ho vers.97 (appena appena 10 anni 
prima)...
riesco a implementarla cmq?
-- 
-- 
Ciao
Pablitomf (Maurizio Facciuti)
-----------------------------------------------------------------
Access: 97, 2000, XP e 2003
ASP
-----------------------------------------------------------------
http://www.accessgroup.it/
-----------------------------------------------------------------
Il mio motto :
""Non mi fido molto delle statistiche, perchč un uomo con la testa nel forno


 
la eval mi sembra ci fosse anche con il 97 ma mi fido della tua parola
Se la funzione e' pubblica puoi provare la application.run
-- 
ac
y-1=x

 Se la funzione e' pubblica puoi provare la application.run
Non sono pubbliche le funzioni che richiamo... sono tutti gli eventi clik 
delle label nella Form... 

 stato trovato...
Anzi preciso... errore RT 2482 - Impossibile trovare il nome 
"Etichetta114_Clik" specificato nell'espressione...


 Pablitomf (Maurizio Facciuti)
@Alex

 "Etichetta114_Clik" specificato nell'espressione...
mmmmm passa la stringa completa che usi da passare alla funzione EVAL
non mi fido molto della tua prova....!
;-)
@Alex

non mi fido molto della tua prova....!
Zappone sui piedi?
Vai... ci stņ. ;-)
    Dim ctl As Control
    For Each ctl In Me.Form.Controls
        If ctl.ControlType = acLabel Then
            If Left(ctl.Caption, 3) = Me.MiaLabel Then
                Call Eval(ctl.Name & "_Click")
            End If
        End If
    Next ctl
-- 


 
Come fa a capire che e' una funzione?
-- 
ac
y-1=x

 Come fa a capire che e' una funzione?
Bhč la mia domanda era proprio questa. ;-) 

 Pablitomf (Maurizio Facciuti)
Non dimenticare le due parentesi ():
Call Eval(ctl.Name & "_Click()")
Valuta anche l'uso di EventProcPrefix per ottenere tutto quello che c'č 
prima del Click.
Ciao, Carlo 

 ha scritto 
nel messaggio news:erf42f$4pq$1...@tdi.cu.mi.it...
cut
Aggiungo che potresti utilizzare il solo Eval:
anzichč Call Eval(ctl.Name & "_Click()")
basterebbe:  Eval(ctl.Name & "_Click()")
Il punto č che sembra funzionare con "funzioni" o "sub" pubbliche.
Ciao, Carlo 

 Bhè la mia domanda era proprio questa. ;-)
Per farla funzionare devi definire Public l'evento Click, quindi
comporre la chiamata come si fà relativamente ad una chiamata su
Metodo Public di Form:
    Eval ("Forms(" & chr(34) & NomeForm & chr(34) &
").Etichetta0_Click")
@Alex

").Etichetta0_Click")
Come promesso ringraziamenti PUBLIC...
Funziona perfettamente.
DENGHIU VERI MACCCCC'
-- 
-- 
Ciao
Pablitomf (Maurizio Facciuti)
-----------------------------------------------------------------
Access: 97, 2000, XP e 2003
ASP
-----------------------------------------------------------------
http://www.accessgroup.it/
-----------------------------------------------------------------
Il mio motto :
""Non mi fido molto delle statistiche, perchè un uomo con la testa nel forno
