Oppure

Loading
05/11/11 10:12
j7-na
Salve,
ho un problema abbastanza semplice, però mi sto perdendo. In pratica ho 4 TextBox, nella prima grazie ad un command button viene visualizzato un valore.

Ecco:

Option Explicit
Dim i, N As Integer
Dim Valore(1 To 25) As Double
Dim totale As Double

Private Sub Command1_Click()

totale = Val(Text1.Text)
totale = 0
Label1.Caption = ""

Do
N = InputBox("Quanti valori vuoi caricare?" & vbCrLf & _
"(Inserire un valore minore di 10)", "richiesta numero dati")
Loop While N > 10

For i = 1 To N
Valore(i) = InputBox("Inserisci Valore", "Inserimento Dati")
Next i


For i = 1 To N
totale = totale + Valore(i)
Next i

Text1.Text = totale

End Sub



Poi dopo sono andato ad inserire negli atri 3 TextBox il resto di codice:

Private Sub Text2_Change()
Dim c As Double
Dim eccedenza As Double

eccedenza = Val(Text2.Text)

c = totale + eccedenza
Text1.Text = c
End Sub

Private Sub Text3_Change()
Dim c1 As Double
Dim eccedenza1 As Double

eccedenza1 = Val(Text3.Text)

c1 = totale - eccedenza1
Text1.Text = c1
End Sub



Quando vado ad inserire un valore nella Text2...il programma automaticamente mi somma quello che ho aggiunto, se inserisco un valore nella Text3, mi sottrae il valore che ho aggiunto, ma non alla somma che ho ottenuto pochi secondi prima...ma al totale che ho ottenuto grazie al CommandButton.

Ad esempio...se ho inserito 3 valori:

1)1000
2)3000
3)1000

Facendo la somma ottengo 5000...poi inserendo nella Text2 il valore 1000, ottengo 6000, ma se nella Text3 inserisco 1000, non visualizzo 5000, ma visualizzo 4000, cioè il risultato errato. Dove sbaglio? ;)
aaa
05/11/11 10:17
nessuno
Perché utilizzi la variabile totale che non è il valore presente nella textbox2
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
05/11/11 11:09
j7-na
E cosa devo usare?
aaa
05/11/11 12:25
nessuno
Utilizza sempre il valore prendendolo direttamente dal textbox. Ad esempio

Text1.Text = CStr(CDbl(Text1.Text)+CDbl(Text2.Text))

o

Text1.Text = CStr(CDbl(Text1.Text)-CDbl(Text3.Text))

ma non usare l'evento change ...
Ultima modifica effettuata da nessuno 05/11/11 12:32
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
05/11/11 12:51
j7-na
Ho bisogno che subito mi calcoli quello che voglio...perchè non devo usare l'evento change? Cosa dovrei usare?

In effetti se uso l'evento change...mi visualizza valori sbagliati.

Se ad esempio il totale è 2000...inserendo 1000 nella Text2...il totale che visualizzo è 3111...se poi inserisco 1000 nella Text3...il totale che visualizzo è 2000.
Ultima modifica effettuata da j7-na 05/11/11 12:55
aaa
05/11/11 13:14
nessuno
E' ovvio perché il change viene chiamato ogni volta che il valore cambia

Se scrivi 2000 verrà chiamato quando scrivi 2 quando scrivi 20 quando scrivi 200 e quando scrivi 2000.

Quindi avrai sommato i valori 2+20+200+2000

E se sbagli e cancelli un carattere, verrà chiamato ancora finché non termini di inserire il valore.

Devi trovare un modo per indicare che il valore che hai scritto è quello che vuoi usare. O usi il tasto Invio (e usi l'evento KeyPress) o usi dei Command (dei pulsanti) sul form per indicare la somma e la differenza.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
05/11/11 13:19
j7-na
Un esempio???
aaa
05/11/11 13:28
nessuno
Ma vuoi un esempio per tutto?

Intanto prova a seguire i suggerimenti che ti ho dato!

Prova a fare da solo ... poi, se il codice che scrivi ha problemi, ce lo mostri ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.