Уважаемые эксперты помогите пожалуйста создать обработчик события в плане "On Error Resume Next или Goto" и использовав функцию MsgBox"Error",vbCritical,"Error". Проблема в следующем в программе имется три EditBox(а) и один Command под command написан определенный алгоритм с использование вводимого текста через EditBox.
Но вся заморочка в том, что при пустых EditBox(сах) программа вырубается.
Поэтому прошу вашей помощи в создании обработчика события что бы пользователь не смог бы нажатием на Command вызвать крах программы.
Ёще одна проблема помогите обрабатывать сообщения функции msgBox" ",vbOkCancelHelp," " и другие сочетани кнопок в стндартном сообщении MsgBox. Еще одна проблема как правильно извлекать корень кубический и существует или нет Логорифм
натуральный в VB или чем его можно заменить?. Убедительная просьба пожалуйста присылайте примеры. (мне так проще будет понять как оно работает). С уважением Саша. Мыльте пожалуйста Hi-tech@ezmail.ru
Здравствуйте, Cаша! С "ошибками" поступай так: On Error Goto ErrorHandler .... Текст программы ... ErrorHandler: select case err case номер ошибки: обработчик end select resume next 2. Вот так: answer=msgBox (" ",vbOkCancelHelp," ") а потом сравнивай: if answer=vbYes делать то-то if answer=vbCancel делать то-то if answer=vbHelp делать то-то
3. Посмотри на моем сайте. В разделе VB.
Ответ отправлен: 04.03.2003, 20:53 Отправитель: Igoryk Отвечает USA
Приветствую Вас, Cаша! В обработчике Command_Click() проверяй текст в TextN: If TextN.Text = "" Then MsgBox "Отсутсвует значение",vbCritical 'Выдать сообщение TextN.SetFocus 'Передать управление для ввода отсутсвующего значения. End If MsgBox может быть как оператор, так и функция. Соответственно, если MsgBox функция, то она возвращает значение. По возвращаемому значению пожно определить какая кнопка была нажата: Sub MBTest() Dim l As VbMsgBoxResult l = MsgBox("Что делать?", vbCritical + vbYesNoCancel, "Test") Select Case l Case vbYes MsgBox "Нажата кнопка ""Yes""" Case vbNo MsgBox "Нажата кнопка ""No""" Case vbCancel MsgBox "Нажата кнопка ""Cancel"""
End Select По поводу логарифма. В библиотеке VBA есть функция Log, возвращающая натуральный логарифм числа. Преобразования так же описаны. Оператор On Error применяется для обработки не событий, а ошибок. On Error Resume Next В случае ошибки продолжить выполнение. On Error Goto
Ответ отправлен: 05.03.2003, 01:14 Отправитель: USA Отвечает Licvidator
Доброе время суток, Cаша! Саш, я че-то не пойму, ты TextBox называешь EditBox'ом? Судя по листингу программы, да. Короче, я думаю, что ты все усложняешь. Если тебе надо, чтобы при пустых текстовых подях программа выдавала сообщение вроде "Заполните поля!", то сделай проверку на присутствие в этих полях символов. *** Private Sub Command1_Click() If Trim(Text1)="" Or Trim(Text2)="" Or Trim(Text3)="" Then _ MsgBox "Заполните поля!", vbCritical, "Ошибка!" 'здесь код программы End Sub *** Но если уж очень хочется с помощью On Error, то плиzz: *** Private Sub Command1_Click() On Error GoTo 1 'текст программы Exit Sub' обязательно, иначе выведется сообщение о якобы произошедшей ошибке 1 MsgBox "Заполните поля!", vbCritical, "Ошибка!" Exit
Sub' обязательно, иначе зациклится End Sub *** Что касается сочетания и программы, то смотри: *** Dim s s = (MsgBox "Заполните поля!", vbCritical + vbOKCancel, "Ошибка!")' скобки обязательны If s = vbOK Then ' обрабатываешь "ОК" End If If s = vbCancel Then ' обрабатываешь "Cancel" End If *** Че-то я забыл, как извлекать кубические корни, но логарифмы надо брать так: 'Logarithm to base N LogN(X) = Log(X) / Log(N) Иначе говоря, если тебе надо вычислить логарифм числа Х (например, 10) по основанию N (например, 2), то пиши след. код: *** Dim A A = Log(10) / Log(2) ***
Ответ отправлен: 05.03.2003, 15:50 Отправитель: Licvidator
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.