Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2018
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Function Słownie(x As Variant) As String 'dla liczb od -999 999 999 999.99 do 999 999 999 999.99
  2. 'Sprawdzamy czy podana kwota jest mniejsza od zera jeśli jest to dopisujemy do kwoty słownie słowo minus
  3. If x < 0 Then w = w & "minus "
  4.  
  5. 'Konwertujemy liczbę na zapis, który będzie pokazywał zawsze miliardy miliony, tysiące i jednostki
  6. 'nawet jeśli będą to same zera
  7. x = Format(Abs(x), "000 000 000 000.00")
  8. 'części odpowiedzialne za miliardy, miliony itd. przypisujemy do oddzielnych zmiennych 3 cyfrowych
  9. 'wiodące zera również są w nich brane pod uwagę, a do groszy musimy dodać jedna zero na początku
  10. 'żeby później działało odpowiednio z funckją trzy
  11. mld = Left(x, 3): m = Mid(x, 5, 3): t = Mid(x, 9, 3): j = Mid(x, 13, 3): g = Right(x, 2)
  12.  
  13. 'Sprawdzamy miliardy i w zależności od ich ilości nadajemy inne końcówki
  14. 'analogicznie robimy z milionami, tysiącami, jednościami i groszami
  15. Select Case mld
  16.    Case 0
  17.    Case 1
  18.        w = "jeden miliard "
  19.    Case Else
  20.        'za pomocą funkcji trzy sprawdzamy jaka jest liczba miliardów, a późniejszych częściach milionów itd.
  21.         w = w & trzy(mld)
  22.         'dodajemy odpowiedni "końcówek" na podstawie połączeniu odpowiednich warunków
  23.        If Mid(mld, 2, 1) <> 1 And (Right(mld, 1) = 2 Or Right(mld, 1) = 3 Or Right(mld, 1) = 4) Then w = w & "miliardy " Else w = w & "miliardów "
  24. End Select
  25.  
  26. 'Sprawdzanie milionów analogicznie jak miliardów
  27. Select Case m
  28.     Case 0
  29.     Case 1
  30.         w = "jeden milion "
  31.     Case Else
  32.     w = w & trzy(m)
  33.     If Mid(m, 2, 1) <> 1 And (Right(m, 1) = 2 Or Right(m, 1) = 3 Or Right(m, 1) = 4) Then w = w & "miliony " Else w = w & "milionów "
  34. End Select
  35.  
  36. 'Sprawdzanie tysięcy analogicznie jak miliardów
  37. Select Case t
  38.    Case 0
  39.    Case 1
  40.        w = w & "jeden tysiąc "
  41.    Case Else
  42.        w = w & trzy(t)
  43.        If Mid(t, 2, 1) <> 1 And (Right(t, 1) = 2 Or Right(t, 1) = 3 Or Right(t, 1) = 4) Then w = w & "tysiące " Else w = w & "tysięcy "
  44. End Select
  45.  
  46. 'Sprawdzanie jedności analogicznie jak miliardów
  47. Select Case j
  48.     Case 0
  49.         If mld = 0 And m = 0 And t = 0 Then w = w & "zero złotych " Else w = w & "zł "
  50.     Case 1
  51.         If mld = 0 And m = 0 And t = 0 Then w = w & "jeden złoty " Else w = w & "zł "
  52.     Case Else
  53.         w = w & trzy(j)
  54.         If Mid(j, 2, 1) <> 1 And (Right(j, 1) = 2 Or Right(j, 1) = 3 Or Right(j, 1) = 4) Then w = w & "zł " Else w = w & "zł "
  55. End Select
  56.  
  57. 'sprawdzanie groszy analogicznie jak miliardów
  58. Select Case g
  59.    Case 0
  60.        w = w & "0/100"
  61.    Case Else
  62.        w = w & g
  63.        w = w & "/100"
  64. End Select
  65.  
  66. Słownie = w
  67. End Function
  68.  
  69. Function trzy(x As Variant) As String
  70. 'dzielimy trzy cyfry na część odpowiedzialną za setki, dziesiątki i jedności
  71. x3 = Val(Left(x, 1)): x2 = Val(Mid(x, 2, 1)): x1 = Val(Right(x, 1))
  72. 'Spradzamy jaka to setka
  73. If x3 = 9 Then w = w & "dziewięćset "
  74. If x3 = 8 Then w = w & "osiemset "
  75. If x3 = 7 Then w = w & "siedemset "
  76. If x3 = 6 Then w = w & "sześćset "
  77. If x3 = 5 Then w = w & "pięćset "
  78. If x3 = 4 Then w = w & "czterysta "
  79. If x3 = 3 Then w = w & "trzysta "
  80. If x3 = 2 Then w = w & "dwieście "
  81. If x3 = 1 Then w = w & "sto "
  82. 'Sprawdzamy jaka to dziesiątka łącząc z ewentualną setką
  83. If x2 = 9 Then w = w & "dziewięćdziesiąt "
  84. If x2 = 8 Then w = w & "osiemdziesiąt "
  85. If x2 = 7 Then w = w & "siedemdziesiąt "
  86. If x2 = 6 Then w = w & "sześćdziesiąt "
  87. If x2 = 5 Then w = w & "pięćdziesiąt "
  88. If x2 = 4 Then w = w & "czterdzieści "
  89. If x2 = 3 Then w = w & "trzydzieści "
  90. If x2 = 2 Then w = w & "dwadzieścia "
  91. 'Sprawdzamy czy to nie jest nastka łącząc z ewentualną setką
  92. If x2 = 1 Then
  93.    If x1 = 9 Then w = w & "dziewiętnaście "
  94.    If x1 = 8 Then w = w & "osiemnaście "
  95.    If x1 = 7 Then w = w & "siedemnaście "
  96.    If x1 = 6 Then w = w & "szesnaście "
  97.    If x1 = 5 Then w = w & "piętnaście "
  98.    If x1 = 4 Then w = w & "czternaście "
  99.    If x1 = 3 Then w = w & "trzynaście "
  100.    If x1 = 2 Then w = w & "dwanaście "
  101.    If x1 = 1 Then w = w & "jedenaście "
  102.    If x1 = 0 Then w = w & "dziesięć "
  103. End If
  104. 'Sprawdzamy jaka to cyfra jedności i dołączamy do ewentualnej wcześniejszej części
  105. If x2 <> 1 Then
  106.     If x1 = 9 Then w = w & "dziewięć "
  107.     If x1 = 8 Then w = w & "osiem "
  108.     If x1 = 7 Then w = w & "siedem "
  109.     If x1 = 6 Then w = w & "sześć "
  110.     If x1 = 5 Then w = w & "pięć "
  111.     If x1 = 4 Then w = w & "cztery "
  112.     If x1 = 3 Then w = w & "trzy "
  113.     If x1 = 2 Then w = w & "dwa "
  114.     If x1 = 1 Then w = w & "jeden "
  115. End If
  116. trzy = w
  117. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement