uprava makra pro Excel

From: Sokol (sokol01@seznam.cz)
Date: 21. 11. 2002, 19:43 CET


Zdravim ,

     mam nasledujici makro ktery mi vypisuje cisla slovy (dik lidem z
     konfery) a libilo by se mi kdyby dokazalo ke slovum pridat i
     halere napr. 200,40 prevest na dveste 0.40 nebo 40 hal. na
     formatu mi celkem nezalezi, nemel by to byt problem, napada me
     treba uschovat ten tu cast za des. teckou a pak ji pridat k
     vystupu, ale nevyznam se ve funkcich VB ani v jeho syntaxi
     a ucit se to jen pro tohle mi prijde jako ztrata casu
     poradi nekdo?
     predem dik

 Makro jsem zkratil o to co jsem povazoval za nepodstatne pro tu zmenu
 (doufam ze jen o to) kdyby to bylo potreba cely tak to poslu.
     
----
Option Explicit

Function CisloNaText(ByVal cislo)
    Dim text As String
    
        '________kontroly ________
    
    If cislo > 1000000 Then
        MsgBox "cislo je vetsi jak Milion"
        Exit Function    'do milionu
    End If
    cislo = Int(cislo)      'Zaokrouhli cislo
        '_________________________
    
    If cislo >= 1000 And cislo < 5000 Then
        text = retezec(Int(cislo / 1000) * 1000)
        cislo = cislo - Int(cislo / 1000) * 1000
    ElseIf cislo >= 5000 Then
        text = TriCisla(Left(Trim(Str(cislo)), Len(Trim(Str(cislo))) - 3)) & "tisíc"
        cislo = cislo - Val(Left(Trim(Str(cislo)), Len(Trim(Str(cislo))) - 3)) * 1000
    End If
    text = text & TriCisla(cislo)
    CisloNaText = text
End Function

Private Function TriCisla(cislo)
    Dim text As String
            
            'Pro císla od 100 do 999
    If cislo > 99 Then
        text = retezec(Int(cislo / 100) * 100)
        cislo = cislo - Int(cislo / 100) * 100
    End If
        'Pro císla do 100
    If cislo > 19 Then
        text = text & retezec(Int(cislo / 10) * 10) & retezec(cislo - Int(cislo / 10) * 10)
    Else
        text = text & retezec(cislo)
    End If
    TriCisla = text
End Function

Private Function retezec(cislo)
    Dim text As String
    If cislo = 1 Then
            text = "jedna"
    ElseIf cislo = 2 Then
            text = "dvě"
 ...

    ElseIf cislo >= 3000 And cislo <= 4000 Then
        text = retezec(Val(Left(cislo, 1))) & "tisíce"
    End If
    
    retezec = text
End Function
----
     

-- 
Zdravi
 Sokol                


E-mail: sokol01@atlas.cz
ICQ #65208171

'We are all immortal
    until we die'
 Flitzanu the Silly



This archive was generated by hypermail 2.1.2 : 21. 11. 2002, 22:02 CET