Formattare TextBox



  • Formattare TextBox
    di gargiu data: 29/10/2015 12:42:36

    Ciao a tutti,
    Ho un form in cui vi sono molte checkbox che agiscono su Textbox che si popolano di un determinato valore se la checkbox viene abilitata.
    Ho il problema di formattare queste textbox che sono tantissime, impostando il valore decimale a 2 cifre.
    Esiste un metodo per cui posso formattarle tutte allo stesso modo senza dover indicare la formattazione in ogni singola SUB?

    Con la speranza di aver spiegato bene il problema, attendo vostre indicazioni.

    Grazie
     
    Private Sub CheckBox2_Click()
    If CheckBox2.Value = vbChecked Then
    cb2 = ""
    CheckBox2.Font.Bold = False
    Else
    cb2 = chf2
    CheckBox2.Font.Bold = True
    End If
    tot1 = Val(cb1) + Val(cb2) + Val(cb3)
    End Sub
    Private Sub CheckBox3_Click()
    If CheckBox3.Value = vbChecked Then
    cb3 = ""
    CheckBox3.Font.Bold = False
    Else
    cb3 = chf3
    CheckBox3.Font.Bold = True
    End If
    tot1 = Val(cb1) + Val(cb2) + Val(cb3)
    End Sub
    Private Sub CheckBox4_Click()
    If CheckBox4.Value = vbChecked Then
    cb4 = ""
    CheckBox4.Font.Bold = False
    Else
    cb4 = chf1
    CheckBox4.Font.Bold = True
    End If
    tot2 = Val(cb4) + Val(cb5) + Val(cb6)
    End Sub
    Private Sub CheckBox5_Click()
    If CheckBox5.Value = vbChecked Then
    cb5 = ""
    CheckBox5.Font.Bold = False
    Else
    cb5 = chf2
    CheckBox5.Font.Bold = True
    End If
    tot2 = Val(cb4) + Val(cb5) + Val(cb6)
    End Sub
    Private Sub CheckBox6_Click()
    If CheckBox6.Value = vbChecked Then
    cb6 = ""
    CheckBox6.Font.Bold = False
    Else
    cb6 = chf3
    CheckBox6.Font.Bold = True
    End If
    tot2 = Val(cb4) + Val(cb5) + Val(cb6)
    End Sub
    Private Sub CheckBox7_Click()
    If CheckBox7.Value = vbChecked Then
    cb7 = ""
    CheckBox7.Font.Bold = False
    Else
    cb7 = chf1
    CheckBox7.Font.Bold = True
    End If
    tot3 = Val(cb7) + Val(cb8) + Val(cb9)



  • di patel data: 30/10/2015 07:42:11

    l'hai spiegato bene, ma per metterci in condizione di testare l'eventuale soluzione devi allegare un file di esempio





  • di Arrampicatore data: 30/10/2015 19:30:33

    Se ho capito quel che ti serve, puoi creare una Sub che non sia Private e richiamarla all'interno dei vari eventi click:
     
    Public Sub formatta(oggetto As Object)
    With oggetto
        If .Value = vbChecked Then
            .Font.Bold = False
        Else
            .Font.Bold = True
        End If
    End With
    End Sub



  • di Marius44 data: 31/10/2015 06:36:58

    Ma quello che suggerisci cambia il tipo di Font, Grassetto o Normale, della TextBox.
    L'Utente chiede la formattazione del valore con due cifre decimali.

    Come bene ha detto patel (un saluto) è meglio "vedere" il file.

    Ciao,
    Mario



  • di gargiu data: 31/10/2015 09:32:57

    Ho modificato il concetto di sviluppo prelevando direttamente i dati dal foglio di calcolo, questo mi permette di ottenere corretti le somme. Mi manca ancora di capire come formattare le textbox per ottenere i 2 decimali dopo la virgola. allego il file.

    Grazie per l'interesse



  • di tanimon data: 31/10/2015 11:26:15

    cit gargiu
    Ho modificato il concetto di sviluppo prelevando direttamente i dati dal foglio di calcolo

    non ho letto tutta la tua macro, ma se devi solo convertire un dato numerico in stringa per una textbox,
    hai pensato di usare la funzione CStr?

    dalla guidaa di 2007:

    Esempio di funzione CStr
    In questo esempio la funzione CStr viene utilizzata per convertire un valore numerico in String.

    Dim MyDouble, MyString
    MyDouble = 437.324 ' MyDouble è di tipo Double.
    MyString = CStr(MyDouble) ' MyString contiene "437,324".
    ciao
    Frank



  • di gargiu data: 02/11/2015 09:17:45

    L'istruzione é semplice, ma io devo formattare un dato assoluto prelevato da una cella del foglio e popolare una textbox nella form. Come posso strutturare l'istruzione per formattare tutte le textbox della form.
    Il suggerimento di Arrampicatore di inserire l'istruzione in una Sub pubblica mi sembrava andare nella giusta direzione in cludendo un ciclo. Ma come costruisco questo ciclo?



  • di Albatros54 data: 02/11/2015 11:01:52

    La mia soluzione potrebbe essere che ,dato che gia hai le sub , nel codice aggiungere per ogni sub , la riga di codice che ti posto.
    Ciao
    albatros54
     
    Private Sub CheckBox1_Click()
    If CheckBox1.Value = vbChecked Then
    CheckBox1.Font.Bold = False
    HOME.CheckBox1.Value = False
    cb1 = ""
    Else
    CheckBox1.Font.Bold = True
    HOME.CheckBox1.Value = True
    cb1 = "X"
    End If
    tot1 = [HOME!O20]
    tot1 = Format(tot1, "#,##.00")<<<=====Aggiungere in ogni sub
    End Sub






  • di gargiu data: 02/11/2015 11:43:19

    Laborioso ma ha funzionato.

    Grazie