 | Padło pytanie zasługujące na odpowiedź. : Public Function slownie(wejscie As Variant) As String
'Funkcja konwersji wartosci liczbowej (int/cur/double/float) na liczebnik (string) '--------------------------------------------------------------------------- ' ................... autor : Barman .. bke@o2.pl '.................... poprawił : piotr snob.ovh.org '.................................... '---------------------------------------------------------------------------
'........ UWAGA .................... 'Autor nie bierze odpowiedzialności, za ewentualne niewłasciwe działanie 'programu ;-) 'W FUNKCJI CELOWO ZOSTA£ ZASZYTY PEWIEN B£¡D, zatem bezmyślne kopiowanie i 'wpinanie funkcji do własnych komercyjnych aplikacji nie jest wskazane 'Piotr napisał: 'jeden błąd usunąłem jeżeli jest jeszcze inny to... sorry '...................................
Dim tys_pusty As Boolean Dim mln_pusty As Boolean Dim ile_cyfr As Integer Dim liczba As Variant Dim i As Integer Dim temp As String Dim jednosci As Variant Dim dziesiatki As Variant Dim setki As Variant Dim tys As Variant Dim milion As Variant Dim miliard As Variant Dim bilion As Variant
'definicje tablic liczebników składowych jednosci = Array("", "jeden ", " dwa ", " trzy ", " cztery ", " pięć ", "sześć ", " siedem ", " osiem ", " dziewięć ") dziesiatki = Array("", " dziesięć ", " dwadzieścia ", " trzydzieści ", "czterdzieści ", " pięćdziesiąt ", " sześćdziesiąt ", " siedemdziesiąt ", "osiemdziesiąt ", " dziewięćdziesiąt ") setki = Array("", " sto ", " dwieście ", " trzysta ", " czterysta ", "pięćset ", " sześćset ", " siedemset ", " osiemset ", " dziewięćset ") tys = Array("", " tysiąc ", " tysiące ", " tysięcy ") milion = Array("", " milion ", " miliony ", " milionów ") miliard = Array("", " miliard ", " miliardy ", " miliardów ") bilion = Array("", " bilion ", " biliony ", " bilionów ")
nascie = Array("", " jedenaście ", " dwanaście ", " trzynaście ", "czternaście ", " piętnaście ", " szesnaście ", " siedemnaście ", "osiemnaście ", " dziewiętnaście ") tys_pusty = False mln_pusty = False flgnast = False napis = Format(wejscie, "####0.00") slownie="" ile_cyfr = Len(napis) - 3
For i = 1 To ile_cyfr Select Case (( (3 + ile_cyfr - i)) Mod 3) Case 1 If ((ile_cyfr > 1) And (Val(Mid(napis, (i), 2)) < 20) And (Val(Mid(napis, (i), 2)) > 10)) Then slownie = slownie & nascie(Val(Mid(napis, i + 1, 1))) i = i + 1 flgnast = True Else slownie = slownie & dziesiatki(Val(Mid(napis, i, 1))) End If
Case 0 slownie = slownie & jednosci(Val(Mid(napis, i, 1)))
Case Else slownie = slownie & setki(Val(Mid(napis, i, 1))) End Select
If ((ile_cyfr - i) = 12) Then Select Case Val(Mid(napis, i, 1)) Case 1 If (ile_cyfr) > 13 Then slownie = slownie & bilion(3) Else slownie = slownie & bilion(1) End If Case 2 To 4 slownie = slownie & bilion(2) Case Else slownie = slownie & bilion(3) End Select End If
If (ile_cyfr - i) = 9 Then
If flgnast = True Then slownie = slownie & miliard(3) flgnast = False Else Select Case Val(Mid(napis, i, 1)) Case 1 If (ile_cyfr) > 10 Then slownie = slownie & miliard(3) Else slownie = slownie & miliard(1) End If Case 2 To 4 slownie = slownie & miliard(2) Case Else slownie = slownie & miliard(3) End Select End If End If
If (ile_cyfr - i) = 6 Then If (Val(Mid(napis, (i + 1), 3)) = 0) Then tys_pusty = True End If
If flgnast = True Then slownie = slownie & milion(3) flgnast = False Else Select Case Val(Mid(napis, i, 1)) Case 1 If (ile_cyfr) > 7 Then slownie = slownie & milion(3) Else slownie = slownie & milion(1) End If Case 2 To 4 slownie = slownie & milion(2) Case Else slownie = slownie & milion(3) End Select End If End If
If ((ile_cyfr - i) = 3 And tys_pusty = False) Then If flgnast = True Then slownie = slownie & tys(3) flgnast = False Else Select Case Val(Mid(napis, i, 1)) Case 1 If (ile_cyfr) > 4 Then slownie = slownie & tys(3) Else slownie = slownie & tys(1) End If Case 2 To 4 slownie = slownie & tys(2) Case Else slownie = slownie & tys(3) End Select End If End If
Next
slownie = slownie & " zł " slownie = slownie & Mid(napis, (Len(napis) - 1), 2) & "/100 gr"
End Function
POWODZENIA!
Dodane przez piotr dnia February 16 2007 20:48:58 | 0 Komentarzy · 7427 CzytaÅ„ -  |
|  |