Страницы: 1
RSS
VBA Select Case
 
Здравствуйте! У меня такая задача - создать процедуру, которая должна запрашивать у пользователя два числа, знак арифметической операции (+, -, /, *) и выдавать на экран результат выполнения её над введёнными числами.  
Написала код, но почему-то выводится результат равный нолю. Подскажите, в чём ошибка?  
Sub Z()  
Dim Z, a, b As Integer, c As Variant  
a = InputBox("Введите число")  
b = InputBox("Введите число")  
с = InputBox("Введите знак")  
Select Case c  
Case "+"  
Z = a + b  
Case "-"  
Z = a - b  
Case "/"  
Z = a / b  
Case "*"  
Z = a * b  
End Select  
MsgBox (Z)  
End Sub
 
Не путай ти русскую раскладку и анлийскую и все будет ОК :)
Спасибо
 
во первых у вас в строке:  
c = InputBox("Введите знак")  
стояла русская буква "с"  
 
а вообще можно и без SELECT  
 
Sub Z()  
Dim Z, a, b As Integer, c As Variant  
a = InputBox("Введите число")  
b = InputBox("Введите число")  
c = InputBox("Введите знак")  
MsgBox Application.Evaluate(a & c & b)  
End Sub
Редко но метко ...
 
Ещё одно доказательство пользы option explicit :)
 
GIG_ant, можно и покороче :)  
 
Sub Z()  
MsgBox Evaluate(InputBox("Число1") & InputBox("Введите знак") & InputBox("Число2"))  
End Sub
 
)наверное можно и еще короче  
 
Sub Z()  
MsgBox Evaluate(InputBox("Введите данные"))  
End Sub
 
{quote}{login=Hugo}{date=20.01.2012 03:18}{thema=}{post}Ещё одно доказательство пользы option explicit :){/post}{/quote}  
 
всё равно найдётся куча людей, которые скажут "да ну нафиг ваши Option Explicit, я программирую кучу лет без неё и не обламываюсь, я вообще не объявляю никакие переменные, кому это надо лишние строчки кода, ну, потрачу я полдня на выяснение где "с" русская, где английская и что?"
 
Не, сперва полдня уйдёт на то, чтоб выяснить, что это "c" виновата.  
А уж потом полдня на то, чтоб найти какая именно :)  
Ну конечно в коде побольше этого...
 
> всё равно найдётся куча людей, которые скажут "да ну нафиг ваши Option Explicit  
 
Насчёт кучи людей - не знаю, но именно я так и скажу)  
- программирую несколько лет  
- не обламываюсь )  
- бывают программки и на несколько тысяч строк кода  
- всё четко работает  
- чтобы в коде не появлялась русская С, набираю CV, и, убедившись, что PuntoSwitcher не переключил раскладку, нажатием Backspace затираю лишнюю букву.  
(к счастью, одиночную букву С приходится набирать только при вводе названия столбца; как переменную, букву С никогда не использую, т.к. Punto её порой переключает на другой язык. С другими буквами таким проблем прочти не бывает)  
- почти во всех макросах переменным даю одни и те же имена (типа ra, sh, txt, i, n),  
так что сам с именами переменных не путаюсь.
 
ну значит у вас все впереди :)
Живи и дай жить..
Страницы: 1
Читают тему
Наверх