to ByTrit:
Opravit sklonovani podle pravidel slovenciny by mel nekdo znaly slovenciny.
Nejspis bude nutno pridat potrebne pole a pouzit je u prislusneho radu cisla.
Moderátor: Moderátoři Živě.cz
Option Explicit
Function Slovy1(Cis) As String ' bez mezer mezi slovy
Dim StrCis As String
Dim LenCis As Byte, Rad As Integer, Ofs As Byte
Dim Pol As Byte, pom As String, pom1 As String, pom2 As String
Dim Jedn As Variant, Des1 As Variant, Des As Variant, Sta As Variant
Dim JednTM As Variant, Tis As Variant, Mil As Variant
'
If Not IsNumeric(Cis) Then Slovy1 = "Hodnota není èíslo!": Exit Function
If Cis > 999999999 Then Slovy1 = "Hodnota>999 999 999!": Exit Function
'
Jedn = Array("", "jedna", "dvì", "tøi", "ètyøi", _
"pìt", "šest", "sedm", "osm", "devìt")
Des1 = Array("deset", "jedenáct", "dvanáct", "tøináct", "ètrnáct", _
"patnáct", "šestnáct", "sedmnáct", "osmnáct", "devatenáct")
Des = Array("", "", "dvacet", "tøicet", "ètyøicet", "padesát", _
"šedesát", "sedmdesát", "osmdesát", "devadesát")
Sta = Array("", "jednosto", "dvasta", "tøista", "ètyøista", _
"pìtset", "šestset", "sedmset", "osmset", "devìtset")
Tis = Array("tisíc", "tisíc", "tisíce", "tisíce", "tisíce", _
"tisíc", "tisíc", "tisíc", "tisíc", "tisíc")
JednTM = Array("", "jeden", "dva", "tøi", "ètyøi", _
"pìt", "šest", "sedm", "osm", "devìt")
Mil = Array("milionù", "milion", "miliony", "miliony", "miliony", _
"milionù", "milionù", "milionù", "milionù", "milionù")
'
'
StrCis = CStr(Format(Cis, "0.00"))
Pol = InStr(StrCis, ",") - 1 ' poloha radu jednotek v cisle
Rad = 0 ' rad cislice v cisle
Slovy1 = ""
Do
pom = Mid(StrCis, Pol, 1)
If Pol > 1 Then ' hodnota vyssiho radu nez aktualni
pom1 = Mid(StrCis, Pol - 1, 1)
Else ' hodnota pro nejvyssi aktualni rad
pom1 = "0"
End If
'
Select Case Rad
Case 0
pom2 = IIf(pom1 <> 1, Jedn(pom), Des1(pom)): Ofs = IIf(pom1 <> 1, 1, 2)
Case 1
pom2 = Des(pom): Ofs = 1
Case 2
pom2 = Sta(pom): Ofs = 1
Case 3
pom2 = IIf(pom1 <> 1, JednTM(pom), Des1(pom)): Ofs = IIf(pom1 <> 1, 1, 2)
If Pol > 3 Then ' kdyz zustavaji jeste >3 cislice
If Mid(StrCis, Pol - 2, 3) <> "000" Then
pom2 = pom2 & IIf(pom1 <> 1, Tis(pom), "tisíc") ' a jsou i tisice -> vlozeni slova tisic
Else
Ofs = 3 ' preskoci na rad 6 - miliony
End If
Else ' kdyz zustava jeste <3 cislice -> vlozeni slova tisic
pom2 = pom2 & IIf(pom1 <> 1, Tis(pom), "tisíc")
End If
Case 4
pom2 = Des(pom): Ofs = 1
Case 5
pom2 = Sta(pom): Ofs = 1
Case 6
pom2 = IIf(pom1 <> 1, JednTM(pom) & Mil(pom), Des1(pom) & "milionù"): Ofs = IIf(pom1 <> 1, 1, 2)
Case 7
pom2 = Des(pom): Ofs = 1
Case 8
pom2 = Sta(pom): Ofs = 1
End Select
'
Slovy1 = pom2 & Slovy1
Pol = Pol - Ofs: Rad = Rad + Ofs
'
Loop While Pol > 0
Slovy1 = Trim(Slovy1) ' & " " & Right(StrCis, 2) ' pridani destinne casti
End Function
=Slovy1(A48)
vforejt píše:asi jsem nějak pomalejší, ale v Excelu 2007 mi to nefunguje. Udělal jsem všechno podle předchozích příspěvku ale pořád mi to hlásí chybu. Poraďte mi někdo, díky
Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků