Buongiorno,
Ho un file contenente alcune userform che uso come maschere per inserimento dati.
Riporto, a seguire, un esempio di codice del CommandButton di una di quelle userform.
Private Sub CommandButton1_Click()
If ComboBox12 = "" Or ComboBox10 = "" Or ComboBox11 = "" Or ComboBox12 = "" Or ComboBox13 = "" Or TextBox1 = "" Or TextBox10 = "" Or TextBox11 = "" Then
MsgBox ("I CAMPI OBBLIGATORI NON SONO STATI TUTTI COMPILATI"): Exit Sub
End If
Application.ScreenUpdating = False
Sheets("ARTICOLI").Select
Call InserisciRiga_ARTICOLI
Sheets("ARTICOLI").Select
Application.Worksheets("ARTICOLI").Range("B2").End(xlDown).Offset(1, 0).Value = ComboBox10.Value
Application.Worksheets("ARTICOLI").Range("C2").End(xlDown).Offset(1, 0).Value = ComboBox11.Value
Application.Worksheets("ARTICOLI").Range("D2").End(xlDown).Offset(1, 0).Value = ComboBox12.Value
Application.Worksheets("ARTICOLI").Range("E2").End(xlDown).Offset(1, 0).Value = ComboBox13.Value
Worksheets("ARTICOLI").Range("A2").End(xlDown).Offset(1, 0) = TextBox1.Text
Worksheets("ARTICOLI").Range("F2").End(xlDown).Offset(1, 0) = TextBox10.Text
Worksheets("ARTICOLI").Range("G2").End(xlDown).Offset(1, 0) = TextBox11.Text
Range("A2").Select
MsgBox "INSERIMENTO AVVENUTO CON SUCCESSO"
Application.ScreenUpdating = True
End Sub
Prima viene verificato che il form sia stato interamente compilato, poi parte una macro
che va ad inserire una riga vuota in fondo alla tabella "ARTICOLI", presso tale riga vengono
inseriti i contenuti del form e, alla fine, viene visualizzato il messaggio "INSERIMENTO AVVENUTO CON SUCCESSO".
Funziona tutto bene. I quesiti che vado a farvi riguardano l'abbellimento della mia userform.
- Vorrei che il CommandButton1, dopo essere stato clikkato, e per tutta la durata del suo codice, cambi colore da grigio a giallo.
Vorrei anche che, in contemporanea, mutasse la denominazione di tale bottone (da "INSERISCI" A "INSERIMENTO IN CORSO")
Una volta chiuso il MsgBox "INSERIMENTO AVVENUTO CON SUCCESSO", dunque ad operazione terminata, vorrei che il bottone tornasse
com'era prima di clikkarci sopra (cioè grigio e con la scritta "INSERISCI").
Pensavo di aver trovato un controllo aggiuntivo che facesse al caso mio; si chiama MyHover.ocx
Si tratta di un ocx da porre nella cartella System di Windows. E' rilasciato freeware e consente, secondo l'azione che si compie
sul commandbutton (al passaggio del mouse o sul click), di fargli cambiare colore ed effetto. Il controlo, in effetti, funziona.
Purtroppo, però, presenta un problema. Quando vado a lanciare la userform che lo contiene, mi appare questo messaggio di avviso:
"L'applicazione sta per attivare controlli activeX che potrebbero non essere sicuri. Se la fonte del file è attendibile, scgliere ok.
I controlli verranno inizializzati utilizzando le impostazione dell'area di lavoro corrente."
Speravo di fixare il problema modificando le impostazioni di protezione activeX di Excel ma così non è stato.
Ho letto che l'unico modo per risolvere la cosa sarebbe modificare il registro di sistema. A parte il fatto che non saprei bene come
fare, non vorrei ricorrere ad una soluzione così drastica. Mi chiedevo, allora, se qualcuno di voi conosca un controllo del genere che
non dia lo stesso problema (magari perché rilasciato da Microsoft), oppure se sia possibile ottenere lo stesso risultato senza controlli
aggiuntivi ma solo aggiungendo altro codice a quello da me sopra riportato.
- Una di quelle texbox (TextBox1) inserisce il numero di 13 cifre del barcode EAN13 di un prodotto. Vorrei, se possibile, applicare a quella texbox
un bottone di convalida. In pratica, vorrei che clikkando su tale bottone fosse verificato che il numero immesso in tale texbox fosse,
esattamente, di 13 cifre. Nel caso ne contenesse meno dovrei ricevere un messaggio del tipo "IL NUMERO INSERITO CONTIENE MENO DI 13 CIFRE";
nel caso ne contenesse di più, il messaggio dovrebbe essere "IL NUMERO INSERITO CONTIENE PIU' DI 13 CIFRE".
- Sempre in merito al dato inserito attraverso la TextBox1, vorrei che fosse controllato che quel numero non sia già presente all'interno
della colonna A della tabella "ARTICOLI". Quel codice, infatti, dev'essere univoco. Due articoli diversi non devono avere lo stesso barcode.
Sperando di essere stato abbastanza chiaro, ringrazio in anticipo chi vorrà aiutarmi.