Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Select Case / 7 сообщений из 7, страница 1 из 1
07.05.2008, 22:14
    #35301066
Gul`ka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Case
Cоздать пользовательскую функцию FinancialText для перевода денежных или финансовых значений в текстовую форму... причем выполнять нужно неким образом через Select Case... никто не сталкивался, как это делать?
...
Рейтинг: 0 / 0
07.05.2008, 22:26
    #35301076
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Case
Для учебы или для работы?
Для работы - используйте комбинацию 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
08.05.2008, 09:00
    #35301410
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Case
Модератор:
Worobjoff , я в вашем посте кодировку исправил.
Копипаст из IDE портит реально кодировку. Лучше через ворд.

...
Рейтинг: 0 / 0
08.05.2008, 10:07
    #35301566
Gul`ka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Case
Для учебы) только я не совсем поняла как она должна работать...? если я делаю ее Функцией(через модуль Excel), то какой должен быть входной параметр? и какой должен быть результирующим?
...
Рейтинг: 0 / 0
08.05.2008, 10:12
    #35301586
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Case
Опишите задачу подробней
...
Рейтинг: 0 / 0
08.05.2008, 11:07
    #35301793
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Case
Упростил пример, род числа (мужской женский) не понимает, но для задачи пойдет.
Код: 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
08.05.2008, 21:45
    #35303535
Gul`ka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Case
Да, вроде понятно... а чем отличается первая программа от второй?
или я чего-то не догоняю совсем... и последний вопрос- как сделать чтобы он воспринимал сначала целую часть, а потом то что после запятых??
то есть, чтобы 12,75р. он преобразовывал в "двенадцать рублей семьдесят пять копеек"
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Select Case / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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