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.