Sviluppare funzionalita su Microsoft Office con VBA output textbox non riconosciuta come valuta

LoginRegistrati
Stai vedendo 8 articoli - dal 1 a 8 (di 8 totali)
  • Autore
    Articoli
  • #22442 Risposta

    frallin
    Partecipante

      Gentili, buongiorno a tutti e scusatemi se scriverò con un linguaggio poco tecnico (spero abbastanza comprensibile). Sono neofita e mi sto cimentando da oltre una settimana con un problema di una textbox. Come vedete nella immagine ho tre textbox (netto auto, netto altrirami, lordo) che dovrei formattare come valuta.

      Il codice che utilizzo nella USERFORM frmINSERIMENTO è il seguente:

      Private Sub txtLORDO_AfterUpdate()
          txtLORDO = Format(txtLORDO, "€ #,##0.00")
      End Sub

      Il problema è che quando viene inserito nella cella del foglio, il file di excel sembra che riformatti ogni volta come testo il valore inserito, per cui ho la necessità di ricorvertire la casella come numero. Nell'immagine che riporto provo ad inviare un esempio.

      Ovviamente, essendo formattato come testo, non visualizzo il valore nella casella TOTALI (in verde) e tutto questo mi causa logicamente disagio. Riuscite in qualche modo ad aiutarmi?

      Grazie in anticipo.

      Stefano

      #22443 Risposta
      Luca73
      Luca73
      Partecipante
        18 pts

        ciao.

        Format restituisce una stringa non un valore. pertanto il codice che hai postato mette una stringa nella txtbox. poi quando la ripassi ad excel lui la tratta come tale (anche se non lo so in quanto non ho il codice con cui la trasferisci.

        Prova ad usare la funzione CCUR.

        Ciao

        Luca

         

         

        #22444 Risposta

        frallin
        Partecipante

          Grazie Luca e scusami ma non so come usare la funzione CCUR.

          Questo è tutto il codice della mia User. Riusciresti ad aiutarmi in concreto?

          Grazie

          Private Sub DTSCADENZA_Enter()
          DTSCADENZA.Value = Now()
          End Sub
          
          Private Sub DTDATAINCASSO_Enter()
          DTDATAINCASSO.Value = Now()
          End Sub
          
          Private Sub btmANNULLA_Click()
          txtNUMERO = ""
          cmbINTERMEDIARIO = ""
          cmbCOMPAGNIA = ""
          txtNPOLIZZA = ""
          cmbTIPOPOLIZZA = ""
          txtCONTRAENTE = ""
          cmbRAMO = ""
          cmbFRAZIONAMENTO = ""
          txtNETTOAUTO = ""
          txtNETTOALTRIRAMI = ""
          txtLORDO = ""
          cmbMODALITAPAGAMENTO = ""
          cmbCOLLABORATORE = ""
          txtNOTE = ""
          
          txtNUMERO.SetFocus
          End Sub
          
          Private Sub btmINSERISCI_Click()
          
          Dim PrimaCella As Range
          Dim CellaW As Range
          Set PrimaCella = Range("A4")
          
          If PrimaCella.Offset(1, 0) = "" Then
              Set CellaW = PrimaCella.Offset(1, 0)
          Else
              Set CellaW = PrimaCella.End(xlDown).Offset(1, 0)
          End If
          
          CellaW.Offset(0, 0) = txtNUMERO
          CellaW.Offset(0, 1) = cmbINTERMEDIARIO
          CellaW.Offset(0, 2) = cmbCOMPAGNIA
          CellaW.Offset(0, 3) = txtNPOLIZZA
          CellaW.Offset(0, 4) = cmbTIPOPOLIZZA
          CellaW.Offset(0, 5) = txtCONTRAENTE
          CellaW.Offset(0, 6) = cmbRAMO
          CellaW.Offset(0, 7) = cmbFRAZIONAMENTO
          CellaW.Offset(0, 8) = DTSCADENZA
          CellaW.Offset(0, 9) = txtNETTOAUTO
          CellaW.Offset(0, 10) = txtNETTOALTRIRAMI
          CellaW.Offset(0, 11) = txtLORDO
          CellaW.Offset(0, 12) = DTDATAINCASSO
          CellaW.Offset(0, 13) = cmbMODALITAPAGAMENTO
          CellaW.Offset(0, 17) = cmbCOLLABORATORE
          CellaW.Offset(0, 22) = txtNOTE
          
          
          
          txtNUMERO = ""
          cmbINTERMEDIARIO = ""
          cmbCOMPAGNIA = ""
          txtNPOLIZZA = ""
          cmbTIPOPOLIZZA = ""
          txtCONTRAENTE = ""
          cmbRAMO = ""
          cmbFRAZIONAMENTO = ""
          txtNETTOAUTO = ""
          txtNETTOALTRIRAMI = ""
          txtLORDO = ""
          cmbMODALITAPAGAMENTO = ""
          cmbCOLLABORATORE = ""
          txtNOTE = ""
          
          txtNUMERO.SetFocus
          
          End Sub
          
          
          
          
          
          Private Sub cmbCOLLABORATORE_Change()
          
          End Sub
          
          Private Sub cmbCOMPAGNIA_Change()
          
          End Sub
          
          Private Sub cmbFRAZIONAMENTO_Change()
          
          End Sub
          
          Private Sub cmbINTERMEDIARIO_Change()
          
          End Sub
          
          Private Sub cmbMODALITAPAGAMENTO_Change()
          
          End Sub
          
          Private Sub cmbRAMO_Change()
          
          End Sub
          
          Private Sub cmbTIPOPOLIZZA_Change()
          
          End Sub
          
          Private Sub DTDATAINCASSO_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
          
          Set DTDATAINCASSO = Today
          
          End Sub
          
          Private Sub DTSCADENZA_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
          
          
          
          End Sub
          
          Private Sub Label1_Click()
          
          End Sub
          
          Private Sub lblCOLLABORATORE_Click()
          
          End Sub
          
          Private Sub lblCOMPAGNIA_Click()
          
          End Sub
          
          Private Sub lblDATAINCASSO_Click()
          
          End Sub
          
          Private Sub lblFRAZIONAMENTO_Click()
          
          End Sub
          
          Private Sub lblintermediario_Click()
          
          End Sub
          
          Private Sub lblMODALITAPAGAMENTO_Click()
          
          End Sub
          
          Private Sub lblNETTOAUTO_Click()
          
          End Sub
          
          Private Sub lblNOTE_Click()
          
          End Sub
          
          Private Sub lblNPOLIZZA_Click()
          
          End Sub
          
          Private Sub lblRAMO_Click()
          
          End Sub
          
          Private Sub lblSCADENZA_Click()
          
          End Sub
          
          Private Sub lblTIPOPOLIZZA_Click()
          
          End Sub
          Private Sub txtLORDO_Change()
          
              txtLORDO.Value = Format(txtLORDO.Value, "€ #.##0,00")
          End Sub
          
          
          Private Sub txtNOTE_Change()
          
          End Sub
          
          Private Sub txtNPOLIZZA_Change()
          
          End Sub
          
          Private Sub txtNUMERO_Change()
          
          
          End Sub
          
          #22445 Risposta
          albatros54
          albatros54
          Moderatore
          • Sfida #2
            43 pts

            prova ad inserire questa riga di codice  alla fine della routine"btmINSERISCI_Click()" prima di end sub

            Columns("L").NumberFormat = "$ #,##0.00"

             

             

            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            #22446 Risposta
            Luca73
            Luca73
            Partecipante
              18 pts

              Ciao a tutti,

              oltre a quanto specificato da Albatros (Ciao) modifica la linea

              CellaW.Offset(0, 11) = txtLORDO

              con

              CellaW.Offset(0, 11) = CCur(txtLORDO)

              Inoltre quando non conosci una funzione l'help ti può aiutare a scoprirla e a capire quali sonoi suoi parametri..

              Ciao

              Luca

              #22546 Risposta

              frallin
              Partecipante

                Grazie a tutti per le dritte che ho applicato e sembra che il problema del riconoscimento delle text box come valuta sia risolto!

                Ora però ne è sorto uno più grande (che non so perchè ma prima non avevo)!!!

                Vi chiedo un grande aiuto ancora nel cercare di sistemarmi il foglio che vi invio con le mie esigenze:

                1- Come vedete nel file che vi allego, se inserisco dati nella user, l'inserimento delle righe avviene non all'interno della tabella da me creata e che mi servirà per fare estrazioni; vorrei che i dati vengano inseriti nella tabella che ha una riga totali che non vorrei togliere! Inoltre quando arrivo all'ultimo record inserito nella tabella dovrebbe continuare ad implementare la tabella stessa e non andare al di fuori di essa!! AIUTO!!!

                2- La text box "txtnumero" vorrei che fosse un contatore non modificabile che contasse il record successivo con il numero da inserire nella colonna A (la prima della tabella)!! AIUTO BIS!!!

                Vi prego di aiutarmi perchè sto impazzendo da un pò di giorni! Se riuscite metteteci le mani sopra il file senza problemi.

                Grazie mille in anticipo

                Allegati:
                You must be logged in to view attached files.
                #22555 Risposta
                albatros54
                albatros54
                Moderatore
                • Sfida #2
                  43 pts

                  nella finestra delle proprieta nell'editor vba, seleziona la txtnumero, evidenzi la riga con
                  Enable e la setti a true, questo non ti permette di modificare il valore che verra visualizzato nella textbox.

                  seleziona la tua userform,e incolli questo codice, sull'evento "inizialize".

                  Private Sub UserForm_Initialize()
                      Sheets("PRODUZIONE").Activate
                      m = Range("tabella1").Rows.Count
                      t = ActiveSheet.Range("a5").End(xlDown).Rows + 4
                      Me.txtNUMERO.Value = Range("A" & t) + 1
                  End Sub

                  vai sul tasto inserisci,della tua userform, e sostituisci il codice con quello postato.

                  Private Sub btmINSERISCI_Click()
                  
                      Dim foglioDB As Worksheet
                      Dim compilazione As Range
                  
                      Set foglioDB = Application.ThisWorkbook.Worksheets("PRODUZIONE")
                      Set compilazione = Range("A" & t)
                      If m <> t Then ' se questi valori sono diversi
                      'rigenero la tabella con il nuovo range
                          ActiveWorkbook.Names.Add Name:="tabella1", RefersTo:=Range("a5:ag" & t)
                  
                      End If
                      compilazione.Activate
                      Rows(ActiveCell.Row + 1).Insert Shift:=xlDown 'inserisco una riga
                      compilazione.Offset(1, 0) = txtNUMERO
                      compilazione.Offset(1, 1) = cmbINTERMEDIARIO
                      compilazione.Offset(1, 2) = cmbCOMPAGNIA
                      compilazione.Offset(1, 3) = txtNPOLIZZA
                      compilazione.Offset(1, 4) = cmbTIPOPOLIZZA
                      compilazione.Offset(1, 5) = txtCONTRAENTE
                      compilazione.Offset(1, 6) = cmbRAMO
                      compilazione.Offset(1, 7) = cmbFRAZIONAMENTO
                      compilazione.Offset(1, 8) = DTSCADENZA
                      compilazione.Offset(1, 9) = CCur(txtNETTOAUTO)
                      compilazione.Offset(1, 10) = CCur(txtNETTOALTRIRAMI)
                      compilazione.Offset(0, 11) = CCur(txtLORDO)
                      compilazione.Offset(0, 12) = DTDATAINCASSO
                      compilazione.Offset(0, 13) = cmbMODALITAPAGAMENTO
                      compilazione.Offset(0, 17) = cmbCOLLABORATORE
                      compilazione.Offset(0, 22) = txtNOTE
                  
                      Columns("J").NumberFormat = "€ #,##0.00"
                      Columns("K").NumberFormat = "€ #,##0.00"
                      Columns("L").NumberFormat = "€ #,##0.00"
                  
                  End Sub

                  cosa molto importante devi dichiare le t ed m a livello di modulo , cioe in testa al modulo della userform

                  Dim t As Integer
                  Dim m As Integer

                   

                   

                  Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                  Sempre il mare, uomo libero, amerai!
                  ( Charles Baudelaire )
                  #22612 Risposta

                  frallin
                  Partecipante

                    Grazie Albatros 54!! Con Qualche piccola modifica (che sono felice di aver fatto perchè compio piccoli passi verso la conoscenza), ora funziona molto bene la userform.

                    Devo chiederti altri aiuti perchè sto cercando di implementare la mia programmazione del file inviato:

                    ritieni utile continuare questa discussione o aprirne un'altra visto che l'argomento è diverso?

                    Scusami ma non conosco le dinamiche dei forum.

                    Grazie.

                  LoginRegistrati
                  Stai vedendo 8 articoli - dal 1 a 8 (di 8 totali)
                  Rispondi a: output textbox non riconosciuta come valuta
                  Gli allegati sono permessi solo ad utenti REGISTRATI
                  Le tue informazioni:



                  vecchio frac - 2750 risposte

                  albatros54
                  albatros54 - 791 risposte

                  patel
                  patel - 689 risposte

                  Marius44
                  Marius44 - 592 risposte

                  Luca73
                  Luca73 - 553 risposte