Due note "a margine"
1) vedrei molto meglio il nome della variabile pubblica come pstr_BT_TipoCommessa. Quel prefisso Var trae in inganno, facendo credere che si tratti di una variabile di tipo Variant. La presenza della lettera p aiuta a ricordare l'area di validità. Ma è una questione di "leggibilità" del codice.
2) A cosa serve assegnare a Tipo_commessa_selezionata due valori, uno di seguito all'altro? la prima assegnazione è inutile
bean_bandit ha scritto:
Case "Bt_Archivio_A": ... :Tipo_commessa_selezionata = "Commessa": Tipo_commessa_selezionata = "A"
Case "Bt_Archivio_A": Var_BT_Tipo_Commessa = "[Progetti]!Tipo_commessa=""A""":Tipo_commessa_selezionata = "A"
Tornando alla richiesta principale: l'ha già detto Osvaldo, non puoi cambiare il nome a runtime, perché quello è possibile solo in modalità struttura.
Come fai a sfruttare la funzione Apri_elenco dalla Maschera Elenco? Ti trovi alla fine della funzione a chiamare l'apertura della maschera stessa, quando basterebbe modificarne la proprietà Filter e farne il requery, e a chiudere una maschera (presumibilmente) non più aperta.
...
DoCmd.OpenForm "Elenco", acNormal, "Tipo Commessa", Var_BT_Tipo_Commessa, acFormEdit, acNormal
DoCmd.Close acForm, "Main"
End Function
La funzione va riscritta.
Il discorso dei pulsanti e del loro nome potrebbe trovare una soluzione del tipo: ne crei due, proprio come nella maschera Main, e con l'uso di OpenArgs o andando a guardare il contenuto della proprietà Filter rendi visibile solo uno dei due.