Suma v kuriózně

Obsah

Níže najdete hotovou uživatelsky definovanou funkci ve VBA, která přeloží libovolné číslo od 0 do 9 do jeho textového znázornění, tedy v množství ve slov. Před použitím musí být tato funkce přidána do vaší knihy. Pro tohle:

  1. stiskněte klávesovou zkratku ALT + F11otevřete Editor jazyka Visual Basic
  2. přidat nový prázdný modul přes menu Vložit – Modul
  3. zkopírujte a vložte text této funkce tam:
Funkce SUM(n As Double) As String Dim Nums1, Nums2, Nums3, Nums4 As Variant Nums1 = Array("", "jeden", "dva", "tři", "čtyři", "pět", "šest", "sedm", "osm", "devět") Nums2 = Array("", "deset", "dvacet", "třicet", "čtyřicet", "padesát", "šedesát", "sedmdesát", _ "osmdesát" ", "devadesát") Nums3 = Array("", "sto", "dvě stě", "tři sta", "čtyři sta", "pět set", "šest set", "sedm set", _ " osm set", "devět set") Nums4 = Array("", "jedna", "dva", "tři", "čtyři", "pět", "šest", "sedm", "osm", "devět" ") Nums5 = Array("deset ", "jedenáct", "dvanáct", "třináct", "čtrnáct", _ "patnáct", "šestnáct", "sedmnáct", "osmnáct", "devatenáct") Pokud n < = 0 Then SUMWRITE = "nula" Konec funkce End If 'rozdělení čísla na číslice pomocí pomocné funkce Class ed = Class(n, 1) dec = Class(n, 2) sot = Class(n, 3) tys = Class (n, 4) dectys = Class(n, 5) sottys = Class(n, 6) mil = Class(n, 7) decmil= Class(n, 8) 'kontrola milionů Select Case decmil Case 1 mil_txt = Nums5(mil ) a „miliony " Přejít na www Případ 2 až 9 decmil_txt = Nums2(decmil) Konec Vybrat Vyberte Case mil Case 1 mil_txt = Nums1(mil) & "million" Případ 2, 3, 4 mil_txt = Nums1(mil) & "million" Případ 5 až 20 mil_txt = Nums1(mil) & "miliony" Konec Vybrat www: sottys_txt = Nums3(sottys) ' zkontrolovat tisíce Vybrat případ dectys Případ 1 tys_txt = Nums5(tys) & "tisíce " Přejít na eee Případ 2 až 9 dectys_txt = Nums2 Konec Vybrat Vybrat případ tys Případ 0 Pokud dectys > 0 Pak tys_txt = Nums4(tys) & "tisíce" Případ 1 tys_txt = Nums4(tys) & "tisíc" Případ 2, 3, 4 tys_txt = Nums4(tys) & "tisíce " Případ 5 až 9 tys_txt = Nums4(tys) & "tisíce" End Select If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & "thousands" eee: sot_txt = Nums3(sot) 'check tens dec Case 1 ed_txt = Nums5(ed) GoTo rrr Case 2 To 9 dec_txt = Nums2(dec) End Select ed_txt = Nums1 (ed) rrr: 'vytvořte poslední řádek pomocí SUM IN SPEECH = decmil_txt & mil_txt & sottys_txt & dectys tys_txt & sot_txt & dec_txt & ed_txt Konec Fu nction ' pomocná funkce k extrakci z počtu číslic Private Function Class(M, I) Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1)) End Function    

Uložte soubor (pokud máte Excel 2007 nebo 2010, pak musí mít typ souboru povoleno makro, tedy formát xlsm!) a vraťte se do Excelu. Nyní můžete vytvořenou funkci vložit do libovolné buňky listu obvyklým způsobem – pomocí průvodce funkcí (tlačítko fx v řádku vzorců, kategorii Definováno uživatelem) nebo jednoduše zadáním do buňky ručně a zadáním buňky s částkou jako argument:

Pokud potřebujete k přijatému textu přidat haléře, můžete použít trochu složitější konstrukci:

 u3d ZAPIŠTE SOUČET (A3) & ” rub. “&TEXT((A3-INTEGER(A100))*00;”XNUMX″)&”policajt.” 

u3d ZAPIŠTE SOUČET (A3) & ” rub. “&TEXT((A3-INT(A100))*00;”XNUMX″)&”policajt.”

Pak například pro číslo 35,15 bude výsledek funkce vypadat jako „třicet pět rublů. 15 kop."

 

  • Výkonnější verze funkce s rubly a kopejky v / angličtině z doplňku PLEX
  • Co jsou makra, kam vložit kód makra, jak je používat

 

Napsat komentář