esercizio con bottoni e checkbox
Hai un problema con Excel? 
esercizio con bottoni e checkbox
di piccola (utente non iscritto) data: 09/12/2013 15:12:10
ciao a tutti! non riesco a svolgere il seguente esercizio su vba di excel 2007 :
"creare un bottone chiamato < Calcola> e due checkbox e .Il bottone,se premuto,chiede all'utente due valori < x > e < y >: se tali valori sono entrambi numeri,allora li somma o concatena a seconda di quale checkbox è selezionata (se sono selezionate entrambe,o nessuna,chiede all'utente di selezionarne una);se almeno uno dei due valori non è un numero,allora li concatena in un messaggio all'utente senza controllare le checkbox."
grazie a chi mi aiuterà
di patel data: 09/12/2013 16:54:54
posso capire che non ti riesca qualcosa, ma almeno allega un file con i pulsanti e le checkbox già impostati, non puoi pretendere tutta la pappa scodellata.
di Grograman (utente non iscritto) data: 09/12/2013 16:59:48
Sopratutto se è per un esercizio o almeno offrici un caffè :D
di totygno71 data: 09/12/2013 18:34:13
Da piccola solo un piccolo sforzino ^_^
di totygno71 data: 09/12/2013 20:25:24
Niente da fare...
Vabbuò jà
Allego il file....
Non vorrei mai avere un'insufficienza sulla scoscienza ^_^
di Grograman (utente non iscritto) data: 10/12/2013 08:50:46
Variazione sul tema
Option Explicit
Private Sub CheckBox1_Click()
If Me.CheckBox2 = True And Me.CheckBox1 = False Then
Me.CheckBox1 = 0
Me.CheckBox2 = 1
Else
Me.CheckBox2 = 0
Me.CheckBox1 = Not Me.CheckBox1
End If
End Sub
Private Sub CheckBox2_Click()
If Me.CheckBox1 = True And Me.CheckBox2 = False Then
Me.CheckBox1 = 1
Me.CheckBox2 = 0
Else
Me.CheckBox1 = 0
Me.CheckBox2 = Not Me.CheckBox2
End If
End Sub
Private Sub CommandButton1_Click()
Dim x As Double, y As Double
If Not Me.CheckBox1 And Not Me.CheckBox2 Then
MsgBox "selezionare una opzione"
Exit Sub
End If
x = Application.InputBox("Inserire primo Valore", Title:="Primo Numero", Type:=1)
y = Application.InputBox("Inserire secondo Valore", Title:="Secondo Numero", Type:=1)
If CheckBox1 = True Then
MsgBox "la somma dei valori è " & x + y
ElseIf CheckBox2 = True Then
MsgBox "I valori Numerici sono stati concatenati " & x & y
Exit Sub
End If
End Sub
|
di nichicanta (utente non iscritto) data: 10/12/2013 10:31:44
Ciao Grograman, buongiorno, ho provato il tuo codice abbinadolo ad un pulsante di comando e due CheckBox sul foglio di lavoro, tutto bene solo che non mi visualizza il segno di spunta all'intreno di ogni
CheckBox quando le seleziono (anche singolarmente).
Come mai, nel codice di Totygno questo non accade?
Buona giornata a tutti.
di Grograman (utente non iscritto) data: 10/12/2013 11:59:44
Ecccomemai!
Ti allego il file che ho usato (il suo).
di nichicanta (utente non iscritto) data: 10/12/2013 13:27:50
Ciao grograman, non so spiegartelo ma a me ( pur agendo sullo stesso file e aggiungendo il tuo codice ad un pulsante e due CheckBox non mi permette le spunta ecc).
Provalo, il file allegato l'ho chiamato prova.
Ti saluto.
di Grograman (utente non iscritto) data: 10/12/2013 14:51:41
C'hai raggggione che cacchio ho combinato?
Se riesco vedo dove ho fatto danni!
di nichicanta (utente non iscritto) data: 12/12/2013 09:03:25
Buongiorno a tutti gli amici (esperti e non), ciao Grograman, solo per curiosità te lo chiedo.
hai avuto modo di rilevare il problema che ti ho segnalato?
Saluti.
di Grograman (utente non iscritto) data: 12/12/2013 10:21:12
Ma sai che mi sono incartato?
Non riesco a venirne fuori e sono certo che mi sto complicando la vita quando la soluzione è l'uovo di colombo
di paolomath data: 12/12/2013 11:46:34
Ciao,
assegnando il valore di CheckButton1 (2) all'interno dell'evento click richiami ricorsivamente l'evento click stesso ...oops!
Bye bye
di nichicanta (utente non iscritto) data: 12/12/2013 12:00:21
Ciao paolomath, quindi nel codice di Grograman, cosa va sostituito in base al tuo consiglio, non riesco a capire pur modificando il valore dell'evento Click del CheckButton1 con 0, 1, 2 ecc.
Il file sul quale ho provato quanto da te indicato si chiama Prova.
Insegnamelo per favore, devo imparare ( io ci sto provando, ma non capisco ecc.)
Grazie anticipatamnete e buon lavoro.
di Grograman (utente non iscritto) data: 12/12/2013 12:20:25
Nulla... sono sicuro che c'è un modo più semplice, ma oggi proprio non ingrano!
Option Explicit
Private Sub CheckBox1_Change()
Application.EnableEvents = False
Dim chk1 As MSForms.CheckBox, chk2 As MSForms.CheckBox
Set chk1 = Me.CheckBox1
Set chk2 = Me.CheckBox2
If chk1 = True And chk2 = False Then
chk1 = 1
chk2 = 0
ElseIf chk1 = True And chk2 = False Then
chk1 = 1
chk2 = 0
ElseIf chk1 = True And chk2 = True Then
chk1 = 1
chk2 = 0
Else
chk1 = 0
chk2 = 0
End If
Set chk1 = Me.CheckBox1
Set chk2 = Me.CheckBox2
Application.EnableEvents = True
End Sub
Private Sub CheckBox2_Change()
Application.EnableEvents = False
Dim chk1 As MSForms.CheckBox, chk2 As MSForms.CheckBox
Set chk1 = Me.CheckBox1
Set chk2 = Me.CheckBox2
If chk1 = True And chk2 = False Then
chk1 = 1
chk2 = 0
ElseIf chk1 = False And chk2 = True Then
chk1 = 0
chk2 = 1
ElseIf chk1 = True And chk2 = True Then
chk1 = 0
chk2 = 1
Else
chk1 = 0
chk2 = 0
End If
Set chk1 = Me.CheckBox1
Set chk2 = Me.CheckBox2
Application.EnableEvents = True
End Sub
Private Sub CommandButton1_Click()
Dim x As Double, y As Double
If Not Me.CheckBox1 And Not Me.CheckBox2 Then
MsgBox "selezionare una opzione"
Exit Sub
End If
x = Application.InputBox("Inserire primo Valore", Title:="Primo Numero", Type:=1)
y = Application.InputBox("Inserire secondo Valore", Title:="Secondo Numero", Type:=1)
If CheckBox1 = True Then
MsgBox "la somma dei valori è " & x + y
ElseIf CheckBox2 = True Then
MsgBox "I valori Numerici sono stati concatenati " & x & y
Exit Sub
End If
End Sub |
di paolomath data: 12/12/2013 14:28:28
Ciao,
@Nichicanta
Non è un problema di assegnamento. L'assegnazione CheckButton1 = 1 (o 0) richiama l'evento CheckBox1_Click che richiama se stesso e così via. In pratica abbiamo un funzione ricorsiva. In questo caso la memoria dello stack delle variabili viene piano piano riempita, fino all'overflow. La chiamate viene ripetuta all'infinito se non ci sono controlli per uscire. La chiamata viene eseguita 243 volte prima di dare errore. In Debug si pianta Excel, in esecuzione sembra che non faccia nulla.
(Specifiche di Excel: Dimensioni dello stack di operandi 1.024)
Per altri dettagli puoi vedere:
h t t p://support.microsoft.com/kb/126090/it
@Grograman
Anche nella seconda versione è presente una ricorsione. Solo che dopo alcuni cicli se ne esce perché l'evento Change non accade più.
Controlla se ho detto delle bis.....te
Bye
di nichicanta (utente non iscritto) data: 12/12/2013 15:25:31
Grazie Paolomath, per la gentile e prezioa informazione e precisazione.
Mi informo meglio sul link che mi hai indicato.
Ciao e buon lavoro.
di mb (utente non iscritto) data: 12/12/2013 15:29:26
buon pomeriggio
ho scaricato e modificato il file ma il risultato ottenuto non è soddisfacente
come faccio a sommare e far scrivere il risultato in cella A1, perché come l'ho impostata ottengo un concatena
grazie
If CheckBox1 = True Then
MsgBox "la somma dei valori è " & CDbl(x) + CDbl(y)
...... riga aggiunta ............
Range("A1").Value = x + y
..............................................
ElseIf CheckBox2 = True Then
MsgBox "I valori Numerici sono stati concatenati " & x & y
Exit Sub
End If |
di mb (utente non iscritto) data: 12/12/2013 15:41:37
salve ho rischiato e ci sono riuscito
ecco la modifica
ciao a tutti
If CheckBox1 = True Then
MsgBox "la somma dei valori è " & CDbl(x) + CDbl(y)
Range("A1").Value = CDbl(x) + CDbl(y) |
Vuoi Approfondire?