Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2010, 18:08   #1
Евгений К.
Пользователь
 
Регистрация: 03.06.2010
Сообщений: 11
По умолчанию Кривой макрос

Добрый вечер.
В UserForm использую 3 связанных между собой OptionButtom (т.е. при выборе одного со второго выделение уходит). Для этого написал макрос, но он явно кривой при использовании данных OptionButtom почему-то то в одном, то в другом месте выдает неправилньое значение.

Вот макрос:

Sub Get_Tip_Udoroproch()

If A1 Then
dblUdoroprochSum = (Val(Replace(txtbHeightStv, ",", ".")) / 1000) * (Val(Replace(txtbWeightStv, ",", ".")) / 1000) * 78 * Val(Replace(txtbEURO, ",", "."))
Else
If A2 Then
dblUdoroprochSum = (Val(Replace(txtbHeightStv, ",", ".")) / 1000) * (Val(Replace(txtbWeightStv, ",", ".")) / 1000) * 112 * Val(Replace(txtbEURO, ",", "."))
Else
If A3 Then
dblUdoroprochSum = (Val(Replace(txtbHeightStv, ",", ".")) / 1000) * (Val(Replace(txtbWeightStv, ",", ".")) / 1000) * 145 * Val(Replace(txtbEURO, ",", "."))
Else
dblUdoroprochSum = (Val(Replace(txtbHeightStv, ",", ".")) / 1000) * (Val(Replace(txtbWeightStv, ",", ".")) / 1000) * 0 * Val(Replace(txtbEURO, ",", "."))
End If
End If
End If
Label40 = dblUdoroprochSum

End Sub


А в каждом коде OptionButtom такая штука:

Private Sub A1_Click()
Get_Tip_Udoroproch
End Sub

или

Private Sub A2_Click()
Get_Tip_Udoroproch
End Sub

или

Private Sub A3_Click()
Get_Tip_Udoroproch
End Sub

Подскажите где ошибка? и как сделать правильно

Спасибо

P.S. наверное можно сделать как-то покрасивее, чем через кучу If Else, но я новичек в VBA и по-другому пока не научился
Евгений К. вне форума Ответить с цитированием
Старый 24.08.2010, 18:33   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
наверное можно сделать как-то покрасивее, чем через кучу If Else
Попробуйте так:
Код:
Sub Get_Tip_Udoroproch()
    Select Case True
        Case A1: k = 78
        Case A2: k = 112
        Case A3: k = 145
        Case Else: k = 0
    End Select
    dblUdoroprochSum = (Val(Replace(txtbHeightStv, ",", ".")) / 1000) * _
                       (Val(Replace(txtbWeightStv, ",", ".")) / 1000) * k * Val(Replace(txtbEURO, ",", "."))
    Label40 = dblUdoroprochSum
End Sub
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос постоянно обрабатывает события. При открытии другой книги макрос обрывается. Ples Microsoft Office Excel 8 17.12.2016 18:15
Макрос, запускающий макрос из другого закрытого файла petruha Microsoft Office Excel 7 14.03.2010 11:31
Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос as-is Microsoft Office Excel 4 25.02.2010 07:51
Кривой код Slimbr Помощь студентам 0 10.12.2009 18:13
Построение кривой звука и приём с микрофона TwiX Мультимедиа в Delphi 5 12.11.2009 19:02