powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Select Case
7 сообщений из 7, страница 1 из 1
Select Case
    #35301066
Gul`ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cоздать пользовательскую функцию FinancialText для перевода денежных или финансовых значений в текстовую форму... причем выполнять нужно неким образом через Select Case... никто не сталкивался, как это делать?
...
Рейтинг: 0 / 0
Select Case
    #35301076
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для учебы или для работы?
Для работы - используйте комбинацию case и Choose
(кусок кода)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    i = ((CLng(Value) Mod  100 ) \  10 )
    If i >  1  Then
        If s <> "" Then s = s & " "
        Select Case Падеж
            Case WdПадежИменительный
                s = s & Choose(i, "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто")
            Case WdПадежРодительный
                s = s & Choose(i, "", "двадцати", "тридцати", "сорока", "пятидесяти", "шестидесяти", "семидесяти", "восьмидесяти", "девяноста")
            Case WdПадежДательный
                s = s & Choose(i, "", "двадцати", "тридцати", "сорока", "пятидесяти", "шестидесяти", "семидесяти", "восьмидесяти", "девяноста")
            Case WdПадежВинительный
                s = s & Choose(i, "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто")
            Case WdПадежТворительный
                s = s & Choose(i, "", "двадцатью", "тридцатью", "сорока", "пятьюдесятью", "шестьюдесятью", "семьюдесятью", "восемьюдесятью", "девяностами")
            Case WdПадежПредложный
                s = s & Choose(i, "", "двадцати", "тридцати", "сорока", "пятидесяти", "шестидесяти", "семидесяти", "восьмидесяти", "девяноста")
        End Select
    End If
...
Рейтинг: 0 / 0
Select Case
    #35301410
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор:
Worobjoff , я в вашем посте кодировку исправил.
Копипаст из IDE портит реально кодировку. Лучше через ворд.

...
Рейтинг: 0 / 0
Select Case
    #35301566
Gul`ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для учебы) только я не совсем поняла как она должна работать...? если я делаю ее Функцией(через модуль Excel), то какой должен быть входной параметр? и какой должен быть результирующим?
...
Рейтинг: 0 / 0
Select Case
    #35301586
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опишите задачу подробней
...
Рейтинг: 0 / 0
Select Case
    #35301793
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упростил пример, род числа (мужской женский) не понимает, но для задачи пойдет.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
Public Function NumberToStr(ByVal Val As Currency) As String
   Dim s As String
   Dim t As Integer
   Dim iVal As Currency
   s = ""
   'Выделить единцы до тысячи
   iVal = Val Mod  1000      'Единицы
   Val = Val \  1000        'Уменьшить число
   s = s & ThousandsToStr(iVal)
   '
   If Val >  0  Then   'Этот блок повторить для миллионов, миллиардов
      iVal = Val Mod  1000 
      Val = Val \  1000 
      s = ThousandsToStr(iVal) & "тысяч " & s
   End If
   NumberToStr = s
End Function

Public Function ThousandsToStr(ByVal iVal As Integer) As String
   Dim s As String
   Dim i As Integer
   Dim iUnits As Integer
   i = iVal \  100     'Получить кол-во сотен '\ - Целочисленное деление
   Select Case i
      Case  1 
         s = "сто "
      Case  2 
         s = "двести "
      Case  3 
         s = "триста "
      Case  4 
         s = "четыреста "
         'остальное дописать
   End Select
   
   iVal = iVal Mod  100   'Получить кол-во десятков
   i = iVal \  10 
   iUnits = iVal Mod  10 
   Select Case i
      Case  1     'Особый случай, 11 - 19
         iUnits = iVal Mod  20 
      Case  2 
         s = s & "двадцать "
      Case  3 
         s = s & "тридцать "
      Case  4 
         s = s & "сорок "
         '1-9 дописать
   End Select
   Select Case iUnits
      Case  1 
         s = s & "один "
      Case  2 
         s = s & "два "
      Case  3 
         s = s & "три "
      '4-10 дописать
      Case  11 
         s = s & "одиннадцать "
      Case  12 
         s = s & "двенадцать "
      Case  13 
         s = s & "тринадцать "
      '14-19... дописать
   End Select
   ThousandsToStr = s
End Function
...
Рейтинг: 0 / 0
Select Case
    #35303535
Gul`ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, вроде понятно... а чем отличается первая программа от второй?
или я чего-то не догоняю совсем... и последний вопрос- как сделать чтобы он воспринимал сначала целую часть, а потом то что после запятых??
то есть, чтобы 12,75р. он преобразовывал в "двенадцать рублей семьдесят пять копеек"
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Select Case
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]