Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на Basic / VBA

Выпуск № 050
от 07.03.2003, 09:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 85
Отправлено ответов: 102
Активность: 120 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Igoryk
Статус: Профессиональный
Общий рейтинг: 132.53
URL: IgorykSoft
[Подробней >>]
USA
Статус: Начальный
Общий рейтинг: 200
[Подробней >>]
Licvidator
Статус: Доверительный
Общий рейтинг: 140.77
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 82. Уважаемые эксперты помогите пожалуйста создать обработчик события в плане "On Error Resume Next... (ответов: 3)

Вопросов: 1, ответов: 3


 Вопрос № 82

Уважаемые эксперты помогите пожалуйста создать обработчик события в плане "On Error Resume Next или Goto" и использовав функцию MsgBox"Error",vbCritical,"Error".
Проблема в следующем в программе имется три EditBox(а) и один Command под command написан определенный алгоритм с использование вводимого текста через EditBox.

Но вся заморочка в том, что при пустых EditBox(сах) программа вырубается.

Поэтому прошу вашей помощи в создании обработчика события что бы пользователь не смог бы нажатием на Command вызвать крах программы.

Ёще одна проблема помогите обрабатывать сообщения функции
msgBox" ",vbOkCancelHelp," " и другие сочетани кнопок в стндартном сообщении MsgBox.
Еще одна проблема как правильно извлекать корень кубический
и существует или нет Логорифм натуральный в VB или чем его
можно заменить?.
Убедительная просьба пожалуйста присылайте примеры. (мне так проще будет понять как оно работает).
С уважением Саша.
Мыльте пожалуйста Hi-tech@ezmail.ru


Приложение:


Вопрос отправлен: 04.03.2003, 09:36
Отправитель: Cаша (Hi-tech@ezmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Igoryk

Здравствуйте, 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.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (31)
C / C++ (27)
Perl (6)
Delphi (14)
Pascal (19)
Basic / VBA (10)
Java / JavaScript (9)
PHP (7)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (31)
Windows NT/2000/XP (23)
"Железо" (28)
Поиск информации (14)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (11)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (4)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное