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.