Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22

Flaggare check box da VBA ad EXCEL

  1. #11
    GiuseppeMN non  in linea Scribacchino
    Grazie del tuo riscontro @Sgrubak; non sempre cos scontato anche se dedicare un minuto a chi ha cercato di aiutarti non dovrebbe essere un grosso impegno magari per dire "La soluzione che hai proposto non soddisfa la mia necessit." opzionale "Grazie comunque."



    Alla prossima.

    Buona serata.

    Giuseppe

  2. #12
    GiuseppeMN non  in linea Scribacchino
    Buona giornata @Sgrubak;
    rileggendo la tua cortese risposta #10 non mi chiaro questo passaggio:

    Se vero che ad ogni click corrisponda un cambio di stato, non sempre vero il contrario. In effetti, continuando a cercare in rete, si trovano un sacco di post che, per gestire i due eventi separatamente, usano i flag.
    Potresti chiarirmi questo concetto. Grazie del tempo che potrai dedicarmi.


    Giuseppe

  3. #13
    Sgrubak non  in linea Scribacchino
    Ciao Giuseppe!

    Intendo dire che vero che ad ogni click sul controllo, avviene il cambio del valore, ma al contrario no. Se io cambio da codice il Value con
    CheckBox1.Value=True
    
    di fatto il click non mai avvenuto. Nel caso in cui volessi gestire separatamente i due concetti ("cambio da click"/"cambio da codice") il trucco che ho trovato in rete quello di dichiarare una variabile booleana accessibile da tutta la Form, che possa essere valutata in una If per instradare il codice. Una cosa del tipo:
    Dim nonDaClick As Boolean
    
    Private Sub CheckBox1_Click()
    If nonDaClick Then
        'cosa fare se il valore cambia senza aver clickato sulla CheckBox
    Else
        'cosa fare se ho clickato sulla CheckBox
    End Sub
    
    Private Sub CommandButton1_Click()
    nonDaClick = True
    CheckBox1.Value = Not CheckBox1.Value
    nonDaClick = False
    End Sub
    
    Questo ovviamente nel caso in cui si vogliano gestire i due eventi in modo separato. Onestamente lo trovo un po' troppo complicato... Se mi dimentico di utilizzare la variabile booleana, rischio di avere comportamenti inaspettati e solo perch due eventi che non sono necessariamente collegati, si sovrappongono.

    Spero di aver reso meglio l'idea.

  4. #14
    GiuseppeMN non  in linea Scribacchino
    Buona sera @Sgrubak.
    Tutto molto chiaro, difficilmente utilizzer questi Eventi ma almeno so come gestirli. Grazie


    A disposizione.

    Buona serata.

    Giuseppe

  5. #15
    L'avatar di Max.Riservo
    Max.Riservo non  in linea Scribacchino
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Ciao Giuseppe!

    Intendo dire che vero che ad ogni click sul controllo, avviene il cambio del valore, ma al contrario no. Se io cambio da codice il Value con
    CheckBox1.Value=True
    
    di fatto il click non mai avvenuto. Nel caso in cui volessi gestire separatamente i due concetti ("cambio da click"/"cambio da codice") il trucco che ho trovato in rete quello di dichiarare una variabile booleana accessibile da tutta la Form, che possa essere valutata in una If per instradare il codice. Una cosa del tipo:
    Dim nonDaClick As Boolean
    
    Private Sub CheckBox1_Click()
    If nonDaClick Then
        'cosa fare se il valore cambia senza aver clickato sulla CheckBox
    Else
        'cosa fare se ho clickato sulla CheckBox
    End Sub
    
    Private Sub CommandButton1_Click()
    nonDaClick = True
    CheckBox1.Value = Not CheckBox1.Value
    nonDaClick = False
    End Sub
    
    Questo ovviamente nel caso in cui si vogliano gestire i due eventi in modo separato. Onestamente lo trovo un po' troppo complicato... Se mi dimentico di utilizzare la variabile booleana, rischio di avere comportamenti inaspettati e solo perch due eventi che non sono necessariamente collegati, si sovrappongono.

    Spero di aver reso meglio l'idea.
    Non ho seguito attentamente il 3D ma fatico a comprendere ...
    Dubito che l'utilizzatore sia cos veloce da riuscire a 'cliccare' sulla CheckBox mentre ancora in esecuzione l'evento Click del CommandButton (che di fatto esegue, almeno in questo banale esempio, solo un'istruzione).
    L'approccio proposto ha senso solo se l'esecuzione dell'evento Click del CommandButton sensibilmente lunga (quel tanto che basta) da permettere lo scatenarsi dell'evento click della CheckBox mentre ancora in esecuzione.

    Se il problema del 3D quello che l'evento Click del CheckBox avvenga anche quando si cambia il suo valore da codice allora :
    Private Sub CommandButton1_Click()
    CheckBox1.Value = Not CheckBox1.Value
    ' Scateno da codice l'evento
    Call CheckBox1_Click()
    End Sub
    

  6. #16
    Sgrubak non  in linea Scribacchino
    Ciao Max! Con Giuseppe ci si confrontava sulla gestione degli eventi Click e Change.
    Quote Originariamente inviato da Max.Riservo Visualizza il messaggio
    ...Se il problema del 3D quello che l'evento Click del CheckBox avvenga anche quando si cambia il suo valore da codice allora...
    No, il problema era collegare tra loro due CheckBox; una sulla form e l'altra sul foglio. Giuseppe ha proposto una soluzione molto semplice ed estremamente efficace che non conoscevo. Ma mentre provavo, per testare una mia interpretazione (errata) della sua proposta, ho notato un comportamento per me strano in merito ai due eventi. Da li scaturita la discussione.
    In breve:
    Se sul Click eseguo le istruzioni A, e sul Change eseguo le istruzioni B (immaginando A e B completamente scollegati tra loro a livello di logica), allora in Excel mi pare impossibile separare l'esecuzione di A e B, a meno dell'utilizzo di un flag opportunamente gestito.

    Dalle prove che ho fatto, ho riscontrato che i due eventi vengano scatenati sempre uno a seguito dell'altro. Ora: se vero che ad ogni Click modifico il valore, non vero che ad ogni modifica di valore io eseguo un Click... Quindi se Clicko, mi aspetto che vengano eseguiti si A che B, ma se modifico il valore da codice, mi aspetto che venga eseguito solo B e non A (perch di fatto non ho clickato sul controllo).

    Se non sono stato chiaro, fammi sapere che riprovo a spiegarmi.
    Ultima modifica di Sgrubak; 21-11-2020 10:32 

  7. #17
    L'avatar di Max.Riservo
    Max.Riservo non  in linea Scribacchino
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    In breve:
    Se sul Click eseguo le istruzioni A, e sul Change eseguo le istruzioni B (immaginando A e B completamente scollegati tra loro a livello di logica), allora in Excel mi pare impossibile separare l'esecuzione di A e B, a meno dell'utilizzo di un flag opportunamente gestito.

    Dalle prove che ho fatto, ho riscontrato che i due eventi vengano scatenati sempre uno a seguito dell'altro. Ora: se vero che ad ogni Click modifico il valore, non vero che ad ogni modifica di valore io eseguo un Click... Quindi se Clicko, mi aspetto che vengano eseguiti si A che B, ma se modifico il valore da codice, mi aspetto che venga eseguito solo B e non A (perch di fatto non ho clickato sul controllo).
    Ciao Sgrubak,
    quello che scrivi coerente con la gestione/sequenza degli eventi.
    In fondo se due eventi fossero completamente sovrapponibili uno dei due sarebbe ridondante.

  8. #18
    Sgrubak non  in linea Scribacchino
    Quote Originariamente inviato da Max.Riservo Visualizza il messaggio
    In fondo se due eventi fossero completamente sovrapponibili uno dei due sarebbe ridondante.
    questa la questione... Non capisco quando si distinguano!

    Ripropongo un nuovo esempio per approfondire. Se in una Form di un file Excel nuovo e completamente vuoto, creo una Form e inserisco una CheckBox ed un CommanButton e poi inserisco il codice:
    Private Sub CheckBox1_Change()
    MsgBox "Change"
    End Sub
    
    Private Sub CheckBox1_Click()
    MsgBox "Click"
    End Sub
    
    Private Sub CommandButton1_Click()
    CheckBox1.Value = Not CheckBox1.Value
    End Sub
    
    ottengo che:
    - al click sulla CheckBox mi compaiono le due MsgBox (e fino qui ok... quel che cerco)
    - al click sul bottone mi compaiono le due MsgBox (e qui casca l'asino... Dovrei ottenere solo il Change e non il Click)

    Davvero non capisco...

  9. #19
    L'avatar di Max.Riservo
    Max.Riservo non  in linea Scribacchino
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    questa la questione... Non capisco quando si distinguano!

    - al click sulla CheckBox mi compaiono le due MsgBox (e fino qui ok... quel che cerco)
    - al click sul bottone mi compaiono le due MsgBox (e qui casca l'asino... Dovrei ottenere solo il Change e non il Click)

    Davvero non capisco...
    Prova a sostituire la Checkbox con una TextBox :
    - se il comportamento cambia, allora una peculiarit della CheckBox
    - se il comportamento rimane uguale, oggettivamente rimango perplesso anch'io

  10. #20
    Marius44 non  in linea Scolaretto
    Buongiorno a tutti
    Vorrei proporre un piccolo trucco.
    Atteso che gli eventi della CheckBox avvengono in sequenza in qualsiasi modo sia stato dato l'ordine di variazione (direttamente nell'oggetto o tramite VBA - pulsante di comando), intercetto l'ordine nell'evento Click della CheckBox e, tramite un flag, bypasso l'evento.
    Questo il codice
    
    Option Explicit
    Dim flag As Boolean
    
    Private Sub CheckBox1_Change()
    MsgBox "Change"
    End Sub
    
    Private Sub CheckBox1_Click()
    If flag Then Exit Sub
    MsgBox "Click"
    End Sub
    
    Private Sub CommandButton1_Click()
    flag = True
    CheckBox1.Value = Not CheckBox1.Value
    End Sub
    
    Comunque anch'io resto perplesso per questo strano comportamento.
    Ciao a tutti,
    Mario

+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo

Potrebbero interessarti anche ...

  1. [Office 2010] flaggare casella in word da vba excel
    Da attila666 nel forum Microsoft Excel
    Risposte: 15
    Ultimo Post: 08-01-2019, 11:48
  2. [VBA - Excel 2007]: Creare una Check List
    Da Elimar nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 31-01-2011, 09:34
  3. Check box
    Da gillobillogullo nel forum Microsoft Word
    Risposte: 13
    Ultimo Post: 04-01-2010, 17:07
  4. [VBA-Access] - importazione check box da excel
    Da dr.zoid nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 05-05-2009, 20:09
  5. Listview check e non check
    Da papy2 nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 22-10-2007, 20:37