| Valore di "0" alla cella vuota
di Skrigno |
Salve, mi scuso anticipatamente per la domanda
(che sarà sicuramente stupida) ma ho appena iniziato a "toccare" il
VB e avrei bisogno di un piccolo aiuto. Sto creando un
programmino a "celle" tipo Excel dove inserire valori numerici e,
solo all'ultima cella a destra, ricavarne la somma (o la formula
eventuale). Il programma, però, mi dà due inconvenienti: il
primo è che, per visualizzare la somma devo cliccare sulla celletta
ed io la vorrei automaticamente; la seconda è che il programma non
mi accetta la casella "vuota" come "0" ma devo, per forza di cose,
inserire il valore. Come posso risolvere questo che è
sicuramente un problema stupido? (l'ho detto che ho appena
iniziato...) Grazie mille per l'aiuto
|
|
| di APOBEN64 |
Ciao Skrigno, per avere il valore 0 in una cella si
può procedere indicando in una diversa cella del foglio il valore 0
e richiamandolo nella cella in cui dovresti avere la somma . Oppure
utilizzando sempre il foglio e formattando le celle con la funzione
formato>formattazione condizionale > valore =0 indicando la
zona di celle che ti interessa abbia quel valore. Se usi invece il
VBA e delle celle facendo uso di textbox, allora sarebbe meglio che
indicassi il codice a cui stai lavorando, per meglio capire come
aiutarti. A presto ! |
|
| Grazie di Skrigno |
Ciao Apoben64, ti ringrazio molto dell'aiuto.
Sì, sto usando delle text una vicino all'altra come cellette.
Queste cellette ricevono soltanto il valore numerico (di per sè
non devono calcolare niente) ma il calcolo lo fà solo l'ultima
cella. Ti riporto il codice di un esempio. Il nome delle
celle che ricevono il valore si chiamano Fo1, Fo2, Fo3... fino a
Fo8. L'ultima cella, Fo9, è quella che deve calcolare i valori
immessi. Ora il codice che ho fatto è questo: Private Sub
Fo9_Click() op1 = Fo1 op2 = Fo2 op3 = Fo3 op4 = Fo4
op5 = Fo5 op6 = Fo6 op7 = Fo7 op8 = Fo8
Fo9.Caption = op1 + op2 + op3 + op4 + op5 + op6 + op7 + op8
End Sub
Però questo mi obbliga ad inserire un valore in
tutte le celle (mentre dovrebbero poter restare anche vuote) e la
cella vuota deve prendersi per scontato il valore "0" senza bisogno
di inserire niente. Inoltre, per avere la somma, devo cliccare
sulla celletta Fo9... come posso evitarlo? Dovrebbe apparire
automaticamente. Ti ringrazio tantissimo
|
|
| di apoben64 |
Ciao Skrigno , premetto che sono solito usare le
antiche ma virtuose cells, textbox, ecc., a parte ciò per ottenere
la somma di una serie di textbox puoi usare una funzione ( che
calcola la somma del contenuto delle singole textbox) del tipo :
Public Function Totalecella() as Long Totalecella =
Val(TextBox1.Text) + Val(TextBox2.Text) + Val(Textbox3.Text)
'ovviamente per te op1 ecc.. End Function
Poi per
aggiornare il totale dopo l'uscita da ogni textbox, si può
utilizzare l'evento "exit" di ogni Textbox per richiamare la
funzione
Private Sub TextBox1_Exit(ByVal Cancel As
MSForms.ReturnBoolean) Textbox9.Value = CalcolaSomma() End
Sub
Ovviamente la textbox9 è la cella del totale ma
potrebbe essere anche una label e quindi :
Private Sub
TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Label1.caption= CalcolaSomma() End Sub
... e così
via
Per quanto riguarda avere all'inizio dell'apertura della
userform nelle textbox un valore e cioè "0" puoi usare :
Private Sub UserForm_Activate() For n = 1 To 8 ' inzio
ciclo da 1 a quante sono le tue textbox Controls("textbox" &
n) = 0 Next n End Sub
Spero ti averti in qualche
modo aiutato ! Facci sapere ! |
|
| di Skrigno |
Caro Apoben64, sei stato molto gentile.
Purtroppo però non riesco a "sbrodarmi"... indubbiamente
riusciremmo a capirci meglio se ti inviassi un piccolo esempio di
quello che sto facendo. Quindi, se sei d'accordo, ti invierei
una piccola porzione di progetto (giusto per capire il codice che
dovrei fare). Ti lascio la mia mail sperando di ricevere un tuo
messaggio. Grazie davvero se puoi aiutarmi. A presto.
|
|
| di apoben64 |
Non c'è problema, in privato ti ho mandato la mia
email, stai sicuro che chiederemo anche la consulenza di Mauro per
riuscire a risolvere il tutto . Un salutone, Luca |
|