Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    VB Converti Cifre in Lettere

    Ciao a tutti,

    sto facendo un programma in VB6 e SQL2000 e avrei il seguente problema:

    qualcuno di voi ha una vaga idea di come potrei fare per leggere un numero ( scritto in cifre ) e scriverlo in lettere? un po' come si fa sugli assegni...
    accettoo soluzioni sia in VB che in T-SQL!!

    Grazie mille a chiunque abbia un suggerimento!
    Non può piovere per sempre http://forum.html.it/forum/faccine/064.gif

  2. #2
    questo è il forum giusto
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Utente di HTML.it L'avatar di Toeke
    Registrato dal
    Aug 2002
    Messaggi
    348

    Re: VB Converti Cifre in Lettere

    Originariamente inviato da dieghito101
    Ciao a tutti,

    sto facendo un programma in VB6 e SQL2000 e avrei il seguente problema:

    qualcuno di voi ha una vaga idea di come potrei fare per leggere un numero ( scritto in cifre ) e scriverlo in lettere? un po' come si fa sugli assegni...
    accettoo soluzioni sia in VB che in T-SQL!!

    Grazie mille a chiunque abbia un suggerimento!
    codice:
    '*********************************
    Dim sUnita(19)                  As String
    Dim sDecina(9)                  As String
    
    Private Sub Form_Load()
    
    Dim N As String
    N = "1234567890123,15"
    
    MsgBox NumeroInLettere(N)
    Unload Me
    End Sub
    '******************************************************************************
    '                               NumeroToLettere
    '
    '                Converte il numero intero in lettere
    '
    ' Input : ImportoN                -->Importo Numerico
    '
    ' Ouput : NumeroToLettere         -->Il numero in lettere
    '******************************************************************************
    Function NumeroInLettere(Numero As String) As String
      
    '************************
      'Gestisce la virgola
    '************************
      Dim PosVirg                     As Integer
      Dim Lettere                     As String
      
      Numero$ = ChangeStr(Numero$, ".", "")
      PosVirg% = InStr(Numero$, ",")
    
      If PosVirg% Then
        Lettere$ = NumInLet(Mid(Numero$, 1, Len(Numero) + PosVirg% - 1))
        Lettere$ = Lettere$ & "\" & Format(Mid(Numero$, PosVirg% + 1, Len(Numero$)), "00")
      Else
        Lettere$ = NumInLet(CDbl(Numero$))
      End If
      
      NumeroInLettere = Lettere$
    
    End Function
    
    Private Function NumInLet(N As Double) As String
    
      '************************************************
      'inizializzo i due arry di numeri
      '************************************************
      SetNumeri
      
      Dim ValT            As Double     'Valore Temporaneo per la conversione
      Dim iCent           As Integer    'Valore su cui calcolare le centinaia
      Dim L               As String     'Importo in Lettere
        
      NumInLet = "zero"
    
      If N = 0 Then Exit Function
    
      ValT = N
      L = ""
      
      'miliardi
      iCent = Int(ValT / 1000000000#)
      If iCent Then
        If iCent = 1 Then
          L = "UnMiliardo"
        Else
          L = LCent(iCent) + "Miliardi"
        End If
        ValT = ValT - CDbl(iCent) * 1000000000#
      End If
    
      'milioni
      iCent = Int(ValT / 1000000#)
      If iCent Then
        If iCent = 1 Then
          L = L + "UnMilione"
        Else
          L = L + LCent(iCent) + "Milioni"
        End If
        ValT = ValT - CDbl(iCent) * 1000000#
      End If
    
      'miliaia
      iCent = Int(ValT / 1000)
      If iCent Then
        If iCent = 1 Then
          L = L + "Mille"
        Else
          L = L + LCent(iCent) + "mila"
        End If
        ValT = ValT - CDbl(iCent) * 1000
      End If
    
      'centinaia
      If ValT Then
        L = L + LCent(CInt(ValT))
      End If
    
      NumInLet = L
    
    End Function
    
    Function LCent(N As Integer) As String
    
      ' Ritorna xx% (1/999) convertito in lettere
      Dim Numero                        As String
      Dim Lettere                       As String
      Dim Centinaia                     As Integer
      Dim Decine                        As Integer
      Dim x                             As Integer
      Dim Unita                         As Integer
      Dim sDec                          As String
      
      Numero$ = Format(N, "000")
        
      Lettere$ = ""
      Centinaia% = Val(Left$(Numero$, 1))
      If Centinaia% Then
          If Centinaia% > 1 Then
            Lettere = sUnita(Centinaia%)
          End If
        Lettere = Lettere + "Cento"
      End If
    
      Decine% = (N Mod 100)
      If Decine% Then
        Select Case Decine%
          Case Is >= 20                               'Decine
            sDec = sDecina(Val(Mid$(Numero$, 2, 1)))
            x% = Len(sDec)
            Unita% = Val(Right$(Numero$, 1))          'Unita
              If Unita% = 1 Or Unita% = 8 Then x% = x% - 1
            Lettere$ = Lettere$ & Left(sDec, x%) & sUnita(Unita%)    'Tolgo l'ultima lettera della decina per i
          Case Else
            Lettere$ = Lettere$ + sUnita(Decine)
        End Select
      End If
    
      LCent$ = Lettere$
    
    End Function
    
    
    Sub SetNumeri()
    
    '************************************************
    ' Stringhe per traslitterazione numeri
    '************************************************
      sUnita(1) = "Uno"
      sUnita(2) = "Due"
      sUnita(3) = "Tre"
      sUnita(4) = "Quattro"
      sUnita(5) = "Cinque"
      sUnita(6) = "Sei"
      sUnita(7) = "Sette"
      sUnita(8) = "Otto"
      sUnita(9) = "Nove"
      sUnita(10) = "Dieci"
      sUnita(11) = "Undici"
      sUnita(12) = "Dodici"
      sUnita(13) = "Tredici"
      sUnita(14) = "Quattordici"
      sUnita(15) = "Quindici"
      sUnita(16) = "Sedici"
      sUnita(17) = "Diciassette"
      sUnita(18) = "Diciotto"
      sUnita(19) = "Diciannove"
      
      sDecina(1) = "Dieci"
      sDecina(2) = "Venti"
      sDecina(3) = "Trenta"
      sDecina(4) = "Quaranta"
      sDecina(5) = "Cinquanta"
      sDecina(6) = "Sessanta"
      sDecina(7) = "Settanta"
      sDecina(8) = "Ottanta"
      sDecina(9) = "Novanta"
    
    End Sub
    
    '*********************************************************************
    '                ChangeStr - da usare con versioni minori del Vb6
    '
    'Input  = Stringa                           -->Da convertire
    '         Lettera da sostituire             -->Da convertire
    '         Nuova lettera da rimpiazzare      -->Da convertire
    '
    'Ouput  = Stringa rimpiazzata
    '
    '*********************************************************************
    Function ChangeStr(ByRef sBuffer As String, ByRef OldChar As String, _
                       ByRef NewChar As String) As String
        
      Dim TmpBuf                      As String
      Dim p                           As Integer
    
    On Error GoTo ErrChangeStr
    
      ChangeStr$ = ""   'Default Error
    
      TmpBuf$ = sBuffer$
      p% = InStr(TmpBuf$, OldChar$)
      Do While p > 0
        TmpBuf$ = Left$(TmpBuf$, p% - 1) + NewChar$ + Mid$(TmpBuf$, p% + Len(OldChar$))
        p% = InStr(p% + Len(NewChar$), TmpBuf$, OldChar$)
      Loop
      ChangeStr$ = TmpBuf$
    
    Exit Function
    
    ErrChangeStr:
      ChangeStr$ = ""
    
    End Function

  4. #4
    Grazie mille!!!

    a buon rendere!
    Non può piovere per sempre http://forum.html.it/forum/faccine/064.gif

  5. #5

    Scusate

    Per poter utilizzare questo codice in excel cosa devo modificare?

  6. #6
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Non ti funziona?

    Per me va bene così...

  7. #7
    scusa ma io di visual basic non so niente so che il codice è giusto ma come faccio a farlo funzionare in excel come gli do il numero?devo mettere qualche textbox,bottone.


    :tongue: David

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.