Ciao Yeld, Benvenuto nel forum,
Non vorrei sbagliarmi, ma non mi risulta che in VBA sia possibile fare chiamate "calcolate", cioè usare l'istruzione Call passandole il nome della routine da chiamare.
Se ho capito bene il problema:
- Hai un foglio che contiene una routine principale
- Hai tanti fogli secondari, ognuno dei quali contiene altre macro
- Dal foglio principale, carichi un foglio secondario e vuoi eseguire una delle macro che contiene
- Il nome della macro chiamata varia da foglio a foglio.
Una soluzione potrebbe essere questa:
- Codice: Seleziona tutto
nomefoglio = ActiveWorkbook.Name
Select Case NomeFoglio
Case "nome1"
Call routine1
Case "nome2"
Call routine2
Case "nome3"
Call routine3
Case "nome4"
Call routine4
Case Else
MsgBox ("Foglio sconosciuto... Non so cosa chiamare!")
End Select
Così facendo hai però il problema di dover sapere a priori quale sia il giusto abbinamento nomeFoglio/routine.
Certo, la cosa più pratica sarebbe poter uniformare i nomi delle routine e dei file che vengono aperti...
Un altro modo potrebbe essere quello di usare, al posto del nome del foglio, una stringa scritta in una cella del medesimo, ed indirizzare, quindi, la selezione in base a questa stringa.
Anche qui, però, dovresti avere la certezza che le routine che vai a chiamare siano tutte incluse nalla lista dei "Case" della Select, altrimenti.... ciccia.
Volendo/dovendo fare una cosa più complessa, puoi provare a leggere questo topic:
http://www.pc-facile.com/forum/viewtopic.php?f=26&t=87094&p=495646&hilit=auto%2A#p495193Forse non è proprio in tema con quanto chiedi, però contiene dei link interessanti (un grazie ad Anthony47 !) che forse possono aiutarti.
Tieni presente, però, che in questo caso non si tratta di argomenti per neofiti, ma come spesso dico, se non ci si prova mai...
In ogni caso, per quanto possibile, siamo sempre qui!
Ciao,
MAx