Public Function NumbToStr(ByVal Numb As Currency, Cl As Byte, Item1 As String, Item2 As String, Item3 As String) As String Static fInitData As Boolean Dim NTS As String, Tmp As String, St As Byte, Triad As Integer '-------------------------------------------- ' Подготовка к работе глобальных переменных. '-------------------------------------------- If Not fInitData Then InitData fInitData = True End If '------------------------------------------- ' Подготовка к работе локальных переменных. '------------------------------------------- NTS = "" ' текстовая запись числа St = 1 ' номер обрабатываемой триады '----------------------------------------- ' Перебор триад числа, начиная с младшей. '----------------------------------------- While Numb > 0 Triad = Numb - Int(Numb * 0.001) * 1000 ' выделение триады Numb = Int(Numb * 0.001) ' отброс выделенной триады Select Case St Case 1 ' единицы NTS = TriadToStr(Triad, Cl) If Triad > 0 Then NTS = NTS + " " NTS = NTS + GetDeterm(Triad, Item1, Item2, Item3) Case 2 ' тысячи Tmp = TriadToStr(Triad, 2) If Triad > 0 Then Tmp = Tmp + " " + GetDeterm(Triad, "тысяча", "тысячи", "тысяч") If Tmp + NTS <> "" Then NTS = " " + NTS NTS = Tmp + NTS Case 3 ' миллионы Tmp = TriadToStr(Triad, 1) If Triad > 0 Then Tmp = Tmp + " " + GetDeterm(Triad, "миллион", "миллиона", "миллионов") If Tmp + NTS <> "" Then NTS = " " + NTS NTS = Tmp + NTS Case 4 ' миллиарды Tmp = TriadToStr(Triad, 1) If Triad > 0 Then Tmp = Tmp + " " + GetDeterm(Triad, "миллиард", "миллиарда", "миллиардов") If Tmp + NTS <> "" Then NTS = " " + NTS NTS = Tmp + NTS Case Else ' неизвестные NTS = "? " + NTS End Select St = St + 1 ' следующая триада Wend NumbToStr = NTS End Function