Alcune domande in merito ai commandbutton, alle textbox e alle combobox dentro una userform

Anonimo
2018-05-07T08:24:02+00:00

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.

  1. 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.

  1. 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".

  1. 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.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

1 risposta

Ordina per: Più utili
  1. Anonimo
    2018-05-08T13:25:20+00:00

    Buongiorno,

    Per il secondo e terzo quesito ho risolto così.

    Ho inserito nella UserForm un'icona da usare come pulsante di verifica del barcode.

    Nell'evento click dell'immagine scrivo questo codice:

    Private Sub Image1_Click()

    Dim lunghezza_barcode As Long

    Dim trovato As Boolean

    Application.ScreenUpdating = False

    If TextBox1.Value = "" Then

    Exit Sub

    End If

    lunghezza_barcode = Len(TextBox1.Value)

    If lunghezza_barcode < 13 Then

    MsgBox "CORREGGI IL BARCODE POICHE' HAI INSERITO MENO DI 13 CIFRE", vbExclamation

    Exit sub

    End If

    If lunghezza_barcode > 13 Then

    MsgBox "CORREGGI IL BARCODE POICHE' HAI INSERITO PIU' DI 13 CIFRE", vbExclamation

    Exit sub

    End If

    If lunghezza_barcode = 13 Then

        If Not Sheets("ARTICOLI").[A:B].Cells.Find(TextBox1.Value, LookIn:=xlValues, LookAT:=xlPart) Is Nothing Then

            Sheets("ARTICOLI").Select

            trovato = True

            MsgBox "BARCODE GIA' PRESENTE TRA GLI ARTICOLI IN MAGAZZINO", vbExclamation

        End If

        If trovato = False Then

            MsgBox "BARCODE NON PRESENTE TRA GLI ARTICOLI IN MAGAZZINO", vbInformation

        End If

    End If

    Application.ScreenUpdating = True

    End Sub

    Il codice vba verifica, innanzitutto, se la TextBox1 sia stata compilata; se no, la sub si interrompre lì;

    se sì, conteggia il numero dei caratteri presenti dentro la TextBox. Fatto ciò, viene verificato se tale

    numero sia uguale, oppure inferiore o superiore a 13.

    Se è inferiore, ricevo questo messaggio:

    "CORREGGI IL BARCODE POICHE' HAI INSERITO MENO DI 13 CIFRE"

    Se è superire, ricevo quest'altro messaggio:

    "CORREGGI IL BARCODE POICHE' HAI INSERITO PIU' DI 13 CIFRE"

    Se è uguale a 13, verifica se quel barcode sia presente o meno nella tabella "ARTICOLI".

    Se cè ricevo un tale messaggio, se non c'è ne ricevo un altro.

    Per quanto concerne la quesione del colore del CommandButton, spero ancora riusciate a darmi dei

    suggerimenti. Altrimento terrò quell'ocx provando a modificare il registro di sistema.

    Grazie comunque

    La risposta è stata utile?

    0 commenti Nessun commento