Ciao a tutti dopo aver letto diverse discussioni sull'argomento sono riuscito a scrivere un piccolo codice per la gestione della valuta, ovvero inserendo un qualunque valore numerico, all'evento lostfocus() viene inserita, in automatico la virgola per indicare i centesimi.
Public Sub TextBox1_LostFocus()
Dim a As Float
a = Val(TextBox1.Text) / 100
TextBox1.text = Format$(a, "0.#0")
TextBox2.Text = Val(TextBox1.Text)
End
a questo punto vorrei utilizzare l'evento Change(), e qui mi sono bloccato........ ???
Quello che faceva il codice postato era palese, credo che vuott intendesse chiederti cosa volevi ottenere con il metodo Change.
Francamente formattare qualcosa durante la digitazione appare come minimo fuorviante, ti conviene inserire e basta in textbox1 e formattare solo la textbox2, così potrebbe andare bene credo:
Public Sub TextBox1_Change()
Dim a As Float
a = Val(TextBox1.Text) / 100
TextBox2.Text = Format$(a, "0.#0")
End
....così potrebbe andare bene credo:
...aggiungerei solo questo condizionale:
Public Sub TextBox1_Change()
Dim a As Float
If TextBox1.Text = Null Then
TextBox2.Text = "0"
Return
Endif
.......
.......
per evitare la sollevazione di un errore, nel caso in cui dall'utente vengano cancellate all'interno del TextBox1 tutte le cifre.
in risposta a Gianluigi, la textbox2 mi serviva solo verificare la riconversione del dato con Val, perchè non posso sommare numeri con virgola ma solo con punto. Certamente posso risolvere il problema con l'evento gotfocus() e poi textbox1.text = "". Esempio con la ValueBox posso definire la formatazione con type = currency ma devo sempre utilizzare il tasto virgola per spostarmi sui centesimi.
E variarla così?
Public Sub TextBox1_Change()
Dim a As Float, s As String
a = Val(TextBox1.Text) / 100
s = Format$(a, "0.#0")
TextBox2.Text = Val(s)
End
Potrebbe adottare comunque il tuo primo suggerimento, e poi applicare la funzione Val() al contenuto della TextBox2 in caso di somma:
Public Sub TextBox1_Change()
TextBox2.Text = Str(TextBox1.Text / 100 )
' Esempio di somma:
Print Val(TextBox2.Text) + 1.2
End
Allora... se ho capito quello che vuoi raggiungere, tu vuoi che:
- in un TextBox siano visualizzati i decimali sino ai centesimi separati dagli interi con una virgola e non con il punto;
- scrivendo di seguito dei numeri in quel TextBox, i nuovi numeri immessi siano posti in coda a destra spostando verso sinistra i numeri preesistenti.
Se è così, io proporrei il seguente codice:
Public Sub TextBox1_Change()
TextBox1.text = Format(Replace(TextBox1.Text, ",", Null) / 100, "0.00")
End