Condividi:        

Userform help formato dati

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Userform help formato dati

Postdi Alessandro999 » 09/03/15 14:49

Salve a tutti, oggi sto ciondolando attorno a un problema che non riesco a risolvere, senza venire subito a disturbare ho googlerato un po' qua e un po' là su internet ma non sono riuscito a venirne a capo e allora come sempre ho deciso di scrivere qui perchè so' che qui si risolve tutto :lol:

Venedo al dunque... ho deciso di costruire una userform per un foglio di calcolo e sto costruendone l'impalcatura (sono all' inizio) che poi modificherò inserendo altre cose, il problema è che non riesco a far fare una sottrazione e mostrarla sottoforma di formato valuta

Faccio un esempio, nell' immagine seguente è stato inserito un importo di 15000 euro sulla casella denominata AMMONTARE (questa sarebbe la base) poi nella casella COMPONENTE 1 ho inserito 8000 euro, ed ecco ora arriva il problema : nella casella COMPONENTE 2 in automatico drovrebbe comparire il valore 7000 euro invece mi compare 7 ??? non capisco dove sta l'errore

nel codice seguente ho inserito dappertutto il formato che desidero ma solo nella sub della textbox2 non viene eseguito e non capisco perchè, ho provato anche a variare il codice tipo cose come....

Private Sub TextBox2_Change()

Dim componente2 As Currency

componente2 = Val(TextBox4.Value) - Val(TextBox1.Value)

TextBox2.Value = componente2

creando prima una variabile... e altre varianti più o meno fantasiose ma non ho risolto comunque il problema


Qual è il codice corretto per far comparire 7000 € nella casella dove ora sta il 7 ?

legenda dell' immagine a seguire:

su Textbox4 c'è = 15000

su textbox1 c'è = 8000

su textbox2 c'è = 7


Immagine




Codice: Seleziona tutto
Private Sub TextBox1_AfterUpdate()
   
TextBox1 = Format(TextBox1, "#,#00.00 €")

TextBox2.Value = Val(TextBox4.Value) - Val(TextBox1.Value)

End Sub



Private Sub TextBox2_Change()

TextBox2 = Format(TextBox2, "#,#00.00 €")

TextBox2.Value = Val(TextBox4.Value) - Val(TextBox1.Value)

End Sub


Private Sub TextBox4_AfterUpdate()
   
TextBox4 = Format(TextBox4, "#,#00.00 €")

TextBox2.Value = Val(TextBox4.Value) - Val(TextBox1.Value)

End Sub







GRAZIE per la vostra attenzione
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Sponsor
 

Re: Userform help formato dati

Postdi ricky53 » 09/03/15 15:24

Ciao,
puoi inviare un file di esempio, senza dati riservati.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi Alessandro999 » 09/03/15 16:35

ricky53 ha scritto:Ciao,
puoi inviare un file di esempio, senza dati riservati.



Ciao Ricky :) ecco ho caricato su mega un file di esempio, ah a proposito fai riferimento al codice di questo file e lascia perdere quello del precedente post, in questo file le textbox sono ordinate in un ordine cronologico più chiaro.

https://mega.co.nz/#!TV1hDBSZ!A7G2Ont7MnP-3rVVMiIN3j1TJxSsGb50LoYOqSDeYEY


Grazie per eventuale risposta
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Userform help formato dati

Postdi ricky53 » 09/03/15 17:07

Ciao,
elimina la
Private Sub TextBox3_Change()
con il codice che contiene

cambia
Private Sub TextBox1_AfterUpdate()
e
Private Sub TextBox2_AfterUpdate()

in questo modo
Codice: Seleziona tutto
Private Sub TextBox1_AfterUpdate()
    TextBox3.Value = TextBox1.Value
    If TextBox2 <> "" Then
        TextBox3.Value = TextBox1.Value - TextBox2.Value
    End If
    TextBox1 = Format(TextBox1, "#,#00.00 €")
    TextBox3 = Format(TextBox3, "#,#00.00 €")
End Sub

Private Sub TextBox2_AfterUpdate()
    TextBox3.Value = TextBox1.Value - TextBox2.Value
    TextBox2 = Format(TextBox2, "#,#00.00 €")
    TextBox3 = Format(TextBox3, "#,#00.00 €")
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi ricky53 » 09/03/15 17:34

Ciao,
oppure più semplicemente modifica solo la seguente
Codice: Seleziona tutto
Private Sub TextBox3_Change()
     TextBox3 = Format(TextBox3, "#,#00.00 €")
'     TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)  ' << ===== Da Eliminare !!!
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi Alessandro999 » 09/03/15 17:52

Grazie per la risposta Ricky, ora è comparso un valore in valuta ma il codice così modificato restituisce un risultato errato allego immagine

con 15000,00 € sulla textbox1 e 8000,00 € sulla textbox2 il risultato della Textbox3 deve essere 7000,00 €

cioè la sottrazione di 15000,00 - 8000,00

invece come vedi dà un risultato imcomprensibile pari a -7985,00 € ????

anche spostando l' ordine delle righe non riesco ad ottenere il risultato corretto che in questo esempio come detto sopra è 7000,00 €

Grazie Ricky, per eventuale successiva risposta.

Immagine
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Userform help formato dati

Postdi Alessandro999 » 09/03/15 18:01

ricky53 ha scritto:Ciao,
oppure più semplicemente modifica solo la seguente
Codice: Seleziona tutto
Private Sub TextBox3_Change()
     TextBox3 = Format(TextBox3, "#,#00.00 €")
'     TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)  ' << ===== Da Eliminare !!!
End Sub



Stavolta invece di dare come risultato 7000,00 € mi da come risultato 07,00 € ??? il bello è che non si riesce a capire il senso di questi risultati.... o meglio almeno non ci arrivo io a capire il perchè :roll:



Immagine
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Userform help formato dati

Postdi ricky53 » 09/03/15 18:18

Ciao,
il risultato strano si ha la prima volta e quando pulisci i campi poi cambiando i valori di ammontare i dati sono esatti, se cambi componente 1 ritorna l'errore.

Per rimuovere questa anomalia occorrono due variabili di appoggio, definite pubbliche, che imposti prima di utilizzare il formato con l'Euro sulle TextBox.

Ti sai muovere in autonomia altrimenti ti invio il codice?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi ricky53 » 09/03/15 18:27

Ciao,
ecco il codice che sostituisce le tre Sub di prima
Codice: Seleziona tutto
Private Sub TextBox1_AfterUpdate()
    Ammontare = Val(TextBox1)
    TextBox3.Value = Ammontare - Val(TextBox2)
    TextBox1 = Format(TextBox1, "#,#00.00 €")
End Sub

Private Sub TextBox2_AfterUpdate()
    Application.EnableEvents = False
    TextBox3.Value = Ammontare - Val(TextBox2.Value)
    Application.EnableEvents = True
    TextBox2 = Format(TextBox2, "#,#00.00 €")
End Sub

Private Sub TextBox3_Change()
    TextBox3 = Format(TextBox3, "#,#00.00 €")
End Sub

La varibiale la devi definire in Modulo1 Public e come "Double"
Codice: Seleziona tutto
Public Ammontare As Double

Sub lanciausefrom()
    UserForm1.Show
End Sub


Adesso mi sembra buono ... prova e sono QUI
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi Alessandro999 » 09/03/15 18:47

[quote="ricky53"]Ciao,

Mi hai anticipato mentre ti stavo rispondendo :) , ho cancellato il post e ho provato le nuove istruzioni e sembra funzionare tutto bene per ora ti auguro una buona serata Ricky , e domani forse ti chiedo qualche delucidazione il meccanismo :D

grazie di nuovo !!!!!!!!!!
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Userform help formato dati

Postdi ricky53 » 10/03/15 10:42

Ciao,
bene per aver risolto.

Quando vuoi ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi Alessandro999 » 10/03/15 11:34

Ciao Ricky ho modificato il codice come segue e sembra funzionare tutto, nel codice che mi hai postato non sono però riusciuto a capire a cosa servivano le due l'istruzioni Application.EnableEvents :oops: , poi studiandomi il tuo codice ho pensato che la textbox1 non poteva avere la stessa visibilità all' interno delle varie sub e così ho provato a dichiararla tramite variabile come nel tuo codice mettendo però l'istruzione in alto usando option explicit, così nel modulo ho lasciato solo il comando per lanciare la userform.... userform1.show

Ciao e grazie ancora per l'orientamento



Codice: Seleziona tutto
Option Explicit

Dim ammontare As Double


Private Sub CommandButton1_Click()

TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""

End Sub


    Private Sub TextBox1_AfterUpdate()
       
        ammontare = Val(TextBox1.Value)
       
        TextBox3.Value = ammontare - Val(TextBox2.Value)
       
        TextBox1 = Format(TextBox1.Value, "#,#00.00 €")
   
    End Sub

   
    Private Sub TextBox2_AfterUpdate()
       
        TextBox3.Value = ammontare - Val(TextBox2.Value)
       
        TextBox2 = Format(TextBox2.Value, "#,#00.00 €")
   
    End Sub

   
    Private Sub TextBox3_Change()
       
        TextBox3 = Format(TextBox3.Value, "#,#00.00 €")
   
    End Sub
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Userform help formato dati

Postdi ricky53 » 10/03/15 12:03

Ciao,
la variabile "Ammontare" va definita come l'avevo scritta io nel Modulo 1 e deve essere "Public"

Option Exlicit serve a controllare che tutte le variabili che utilizzi siano state definite prima del loro utilizzo: è una sicurezza nella loro gestione e ti aiuta ad evitare errori

Non devi fare al tre azioni sulle istruzioni riguardanti Textbox1, 2 o 3 perchè il loro utilizzo, all'interno della UserForm, li fa riconoscere.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi Alessandro999 » 10/03/15 12:33

ricky53 ha scritto:Ciao,
la variabile "Ammontare" va definita come l'avevo scritta io nel Modulo 1 e deve essere "Public"

Option Exlicit serve a controllare che tutte le variabili che utilizzi siano state definite prima del loro utilizzo: è una sicurezza nella loro gestione e ti aiuta ad evitare errori

Non devi fare al tre azioni sulle istruzioni riguardanti Textbox1, 2 o 3 perchè il loro utilizzo, all'interno della UserForm, li fa riconoscere.



Ok quindi il modo corretto è definire la variabile come public mettendola nel modulo, bene ne prendo nota !!!

Ok anche per le textbox che dunque sono riconosciute in qualunque punto all' interno della Userform quand'ora dovessi citargliele.

:)
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Userform help formato dati

Postdi ricky53 » 10/03/15 13:11

Ciao,
per poter utilizzare gli oggetti della UserForm nei Moduli devi referenziare la UserForm cui appartengono:

In Modulo 1 prova
Codice: Seleziona tutto
Sub lanciausefrom()
     UserForm1.TextBox1 = 100000   
     UserForm1.Show
End Sub


Lanciala e cosa ottieni?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi Alessandro999 » 10/03/15 15:02

ricky53 ha scritto:Ciao,
per poter utilizzare gli oggetti della UserForm nei Moduli devi referenziare la UserForm cui appartengono:

In Modulo 1 prova
Codice: Seleziona tutto
Sub lanciausefrom()
     UserForm1.TextBox1 = 100000   
     UserForm1.Show
End Sub


Lanciala e cosa ottieni?



Ottengo un valore numerico di default all' interno della textbox1, e volendolo in formato valuta se non sbaglio potrei fare UserForm1.TextBox1 = Format(100000, "#,#00.00 €")

Dunque ho la possibilità di intervenire sui vari oggetti della userform tramite i moduli. Per esempio per una etichetta posso scrivere all' interno del modulo UserForm1.Label1 = "nomecambiato" ... e questo prevarrà sulla riga caption del riquadro proprietà della label1 , spero di non aver detto un mucchio di C. :)
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Userform help formato dati

Postdi ricky53 » 10/03/15 18:01

Ciao,
no al contrario.
Ovviamente non solo nei moduli ma anche nella finestra della UserForm e nella finestra dei Fogli

Puoi anche utilizzare una variabile o un altro oggetto della UserForm oppure una cella
Codice: Seleziona tutto
    UserForm1.TextBox1 = Sheets("Foglio2").Range("A2")
' oppure
    mVar1 = "Tuo dato"
    UserForm1.TextBox1 = mVar1
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Userform help formato dati

Postdi Alessandro999 » 11/03/15 08:52

Ok , mi hai dato diverse idee che userò per far pratica... per il momento grazie e cordiali saluti Ricky :)
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Userform help formato dati

Postdi ricky53 » 11/03/15 12:40

Ciao,
sei sulla strada giusta.

Provare e ... come recita la mia firma !

Sia che ci trovi QUI in caso di necessità.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "Userform help formato dati":


Chi c’è in linea

Visitano il forum: Nessuno e 29 ospiti