Posso far partire la macro dal pulsante del form dopo che ha inserito i dati?
La macro è una SUB come tutte le altre quindi, se è visibile dallo script (dipende da come l’hai creata e da dove è posizionata nell’albero dei progetti), basta semplicemente richiamarne il nome per eseguirla.

Per fare una cosa pulita potresti raggruppare tutte le operazioni di inserimento (cioè di trasferimento dalle caselle di testo alle celle del foglio) in una SUB che potrebbe chiamarsi, ad esempio, Inserisci(), tutte le operazioni di trasferimento da un foglio all’altro in un’altra SUB, chiamata Trasferisci() e tutte quelle di ordinamento in una terza chiamata Ordina() e poi richiamarle una di seguito all’altra, così:

codice:
Private Sub CommandButton1_Click()
   Inserisci
   Trasferisci
   Ordina
End Sub

Private Sub Inserisci()
   [a2] = TextBox1
   [a3] = TextBox2
   eccetera ...
End Sub

Private Sub Trasferisci()

     Istruzioni varie prelevate dalla macro attuale

End Sub

Private Sub Ordina()

     Istruzioni varie prelevate dalla macro attuale

End Sub
In questo modo avresti un modulo principale attivato dall’handler dell’evento click e poi tre routine chiamate in sequenza che svolgono compiti ben specifici.


Esiste un modo in excel per richiamare un nome scrivendo magari solo le prime lettere?
Il modo più semplice che conosca è di attivare un filtro automatico sulle colonne che ti interessano e poi usare quello (Scheda Dati --> Filtro e poi Filtra per testo --> Inizia con), altrimenti potresti fare una macro, attivata dalla modifica di una cella, che preleva il testo inserito e lo evidenzia, una cosa tipo questa che viene attivata dalla modifica del valore di A1 e colora di rosso i nomi presenti nel range B1:B100 che cominciano col contenuto di A1

codice:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [A1]) Is Nothing And [A1] <> "" Then
       Set Rng = Range("B1:B100")
       For Each Casella In Rng
          If Left(Casella, Len([A1])) = [A1].Value Then
             Casella.Font.Color = vbRed
          Else
             Casella.Font.Color = vbBlack
          End If
       Next
    End If
End Sub
oppure, sempre attivata dalla modifica di una cella, potrebbe applicare un filtro o fare altre cose.