Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    5

    VB - conversione importo in lettere

    salve,

    volevo sapere se esiste una funzione in VB che dato un importo lo trasforma in lettere.

    es. 900 -> novecento

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    5

    re conversione importo in lettere

    dimenticavo di precisare che dovrei utilizzare questa funzione in un documento Word

    grazie

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461

    Moderazione

    Esiste un forum dedicato appositamente a Visual Basic e linguaggi affini. Sposto la discussione nell'area dedicata.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Ciao..ti posso assicurare che non esiste una funzione in visual basic che faccia ciò che hai chiesto; l'unico modo (oltre a scriverla autonomamente) è cercare su Internet qualche esempio, sicuramente ne troverai diversi..

    ciao

  5. #5
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    molto tempo fa avevo realizzato una cosa del genere, scartabellando in archivio sono riuscito a trovare il codice, te lo posto, anche se è decisamente grezzo e si può migliorare... ma funziona

    codice:
    Function NumeriPerLettere(Valore) As String
    
    Valore = Replace(Valore, ".", "")
    
    Dim Sez()
    
    Unita = ""
    Decine = ""
    Centinaia = ""
    Uni = ""
    Dec = ""
    Cent = ""
    Sezioni = ""
    NoUnits = 0
    
    Cifre = Len(Valore)
    
    Stringa = ""
    
    P = 0
        
    For Posizione = 1 To Cifre
        P = P + 1
        Stringa = Mid(Valore, Cifre - (Posizione - 1), 1) & Stringa
        If P = 3 Then
            Stringa = "\" & Stringa: P = 0
        End If
    Next
    
    If Left(Stringa, 1) = "\" Then Stringa = Mid(Stringa, 2, Len(Stringa))
    
    Sezioni = Empty
    Sezioni = Split(Stringa, "\")
    
    Nsez = UBound(Sezioni) + 1
    
    Erase Sez()
    ReDim Sez(Nsez)
    
    For S = 0 To Nsez - 1
    
        If Len(Sezioni(S)) < 3 Then Sezioni(S) = String(3 - Len(Sezioni(S)), "0") & Sezioni(S)
        
        If Len(Sezioni(S)) = 3 Then
            Centinaia = Mid(Sezioni(S), 1, 1)
            Select Case Centinaia
                Case "0"
                    Cent = ""
                Case "1"
                    Cent = "cento"
                Case Else
                    Cent = Converti(Centinaia) & "cento"
            End Select
           
            Decine = Mid(Sezioni(S), 2, 1)
            
            Select Case Decine
                Case "0"
                    Dec = ""
                    NoUnits = 0
                Case "1"
                    Dec = Converti(Decine & Mid(Sezioni(S), 3, 1))
                    NoUnits = 1
                    Unita = ""
                Case Else
                    Dec = Converti(Decine & "0")
                    NoUnits = 0
            End Select
                         
            If NoUnits <> 1 Then
                Unita = Mid(Sezioni(S), 3, 1)
                Uni = Converti(Unita)
                If (Unita = "1" Or Unita = "8") And Dec <> "" Then Dec = Mid(Dec, 1, Len(Dec) - 1)
            End If
        End If
        
        Sez(S) = Cent & Dec & Uni
        Cent = "": Dec = "": Uni = ""
    
    Next
    
    Finale = ""
    
    For X = 0 To Nsez - 1
        Select Case Nsez - (X + 1)
            Case 0
                interp = ""
            Case 1
                If Sez(X) = "uno" Then
                    Sez(X) = ""
                    interp = "mille"
                Else
                    interp = "mila"
                End If
            Case 2
                If Sez(X) = "uno" Then
                    Sez(X) = "un"
                    interp = "milione"
                Else
                    interp = "milioni"
                End If
            Case 3
                If Sez(X) = "uno" Then
                    Sez(X) = "un"
                    interp = "miliardo"
                Else
                    interp = "miliardi"
                End If
        End Select
        
        Finale = Finale & Sez(X) & interp
    
    Next
    
    NumeriPerLettere = Finale
    
    End Function
    
    
    Function Converti(Numero)
    
    If Numero = "1" Then Stringa = "uno"
    If Numero = "2" Then Stringa = "due"
    If Numero = "3" Then Stringa = "tre"
    If Numero = "4" Then Stringa = "quattro"
    If Numero = "5" Then Stringa = "cinque"
    If Numero = "6" Then Stringa = "sei"
    If Numero = "7" Then Stringa = "sette"
    If Numero = "8" Then Stringa = "otto"
    If Numero = "9" Then Stringa = "nove"
    If Numero = "10" Then Stringa = "dieci"
    If Numero = "11" Then Stringa = "undici"
    If Numero = "12" Then Stringa = "dodici"
    If Numero = "13" Then Stringa = "tredici"
    If Numero = "14" Then Stringa = "quattordici"
    If Numero = "15" Then Stringa = "quindici"
    If Numero = "16" Then Stringa = "sedici"
    If Numero = "17" Then Stringa = "diciassette"
    If Numero = "18" Then Stringa = "diciotto"
    If Numero = "19" Then Stringa = "diciannove"
    If Numero = "20" Then Stringa = "venti"
    
    If Numero = "30" Then Stringa = "trenta"
    If Numero = "40" Then Stringa = "quaranta"
    If Numero = "50" Then Stringa = "cinquanta"
    If Numero = "60" Then Stringa = "sessanta"
    If Numero = "70" Then Stringa = "settanta"
    If Numero = "80" Then Stringa = "ottanta"
    If Numero = "90" Then Stringa = "novanta"
    If Numero = "100" Then Stringa = "cento"
    
    Converti = Stringa
    
    End Function
    va usata così:

    codice:
    Dim InLettere As String
    InLettere = NumeriPerLettere(1234567890)
    il limite è:
    novecentonovantanovemiliardinovecentonovantanovemi lioninovecentonovantanovemilanovecentonovantanove

    :maLOL:

    Boolean

  6. #6
    Originariamente postato da Boolean:
    il limite è:
    novecentonovantanovemiliardinovecentonov
    antanovemilioninovecentonovantanovemilan
    ovecentonovantanove
    Penso che sia veramente sufficiente!!!!

    ciao mirko

  7. #7
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    hihi ciao MdE!


    Originariamente postato da MdE2005:

    Penso che sia veramente sufficiente!!!!
    si... suppongo di si... a meno che non sia ad uso di Zio Paperone...
    nel qual caso i fantastilioni sarebbero d'obbligo... :maLOL:

    che poi, pensa, basterebbe aggiungere solo:

    codice:
            Case 4
                If Sez(X) = "uno" Then
                    Sez(X) = "un"
                    interp = "fantastilione"
                Else
                    interp = "fantastilioni"
                End If
    :maLOL:

    Boolean

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.