Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / OptionButton / 13 сообщений из 13, страница 1 из 1
08.10.2009, 08:57
    #36238874
Insainer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
У меня проблема - при нажатии CommandButton VBA полностью игнорирует OptionButton - ы. Кто-нибудь сталкивался с такой проблемой. Мне необходима проверка условия OptionButton'а.
...
Рейтинг: 0 / 0
08.10.2009, 10:26
    #36239061
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
> Автор: Insainer

Ничего не понял, можно ещё раз и более подробно и понятно

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
08.10.2009, 11:47
    #36239276
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
авторНичего не понял, можно ещё раз и более подробно и понятно Аналогично. И желательно код приведите. Даже я б сказал обязательно.
...
Рейтинг: 0 / 0
08.10.2009, 13:34
    #36239642
Insainer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
У меня на форме кнопка для построения отчетов, которая запускает макрос. Так вот, во избежании штамповки большого количества кнопок, думаю, логично было бы оставить одну кнопку "Построить отчет" с предусловием - выбора вида отчета при помощи объектов OptionButton.
Мне показалось логичным такая программная реализация:

If OptionButton1.Enabled = True Then
[Построить отчет1]
Exit Sub
End If

If OptionButton2.Enabled = True Then
[Построить отчет2]
Exit Sub
End If

If OptionButton3.Enabled = True Then
[Построить отчет3]
Exit Sub
End If
и т.д.
, однако на деле я VBA просто игнорирует мою логическую структуру и запускает вставки из макрос - кода все подряд. Я, по видимому, неправильно понял механизм работы OptionButton. Вопрос поставил меня в замешательство...?
...
Рейтинг: 0 / 0
08.10.2009, 13:45
    #36239685
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub CommandButton1_Click()

If OptionButton1.Value = True Then
MsgBox  1 
Exit Sub
End If

If OptionButton2.Value = True Then
MsgBox  2 
Exit Sub
End If

If OptionButton3.Value = True Then
MsgBox  3 
Exit Sub
End If

End Sub
...
Рейтинг: 0 / 0
08.10.2009, 13:48
    #36239695
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Если в редакторе ВБА зайти в Properties этих баттонов, то там видно, что разница между ними не в Enabled (они все такие), а в Value = True or False
...
Рейтинг: 0 / 0
08.10.2009, 14:14
    #36239767
Insainer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Большое спасибо...
...
Рейтинг: 0 / 0
08.10.2009, 14:21
    #36239788
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Кстати, с чекбоксами тоже самое - Value True or False. Properties элементов надо смотреть в Design Mode.
...
Рейтинг: 0 / 0
08.10.2009, 20:55
    #36240729
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Ну и мне кажется, так было бы проще код модифицировать да и вообще...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub CommandButton1_Click()

If OptionButton1.Value = True Then one: Exit Sub
If OptionButton2.Value = True Then two: Exit Sub
If OptionButton3.Value = True Then three: Exit Sub

End Sub

Sub one()
MsgBox  1 
End Sub

Sub two()
MsgBox  2 
End Sub

Sub three()
MsgBox  3 
End Sub
...
Рейтинг: 0 / 0
24.10.2009, 16:21
    #36270526
Insainer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Еще вопрос: Как проверить на наличие рабочий лист Excel, то есть если лист "Расчет" есть, то ничего, если нет, то Sheets.Add().Name = "Расчет"
...
Рейтинг: 0 / 0
24.10.2009, 22:31
    #36270779
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Один из возможных вариантов - обработка ошибки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub Test()

On Error GoTo errorhandler ' стандартная обработка ошибок

On Error Resume Next ' временная обработка ошибок
Set shttest = Sheets("Расчет")
If shttest Is Nothing Then
Sheets.Add().Name = "Расчет"
End If

On Error GoTo errorhandler ' возвращаем стандартную обработку ошибок

Exit Sub

errorhandler:
MsgBox "Ошибка!"
Exit Sub

End Sub
...
Рейтинг: 0 / 0
25.10.2009, 00:05
    #36270833
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Другой вариант - обойти все листы и проверить имя. Нашли - меняем флаг.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Test2()

shtest =  0 
For Each sh In ActiveWorkbook.Sheets
If sh.Name = "Расчет" Then shtest =  1 
Next
If shtest =  0  Then Sheets.Add().Name = "Расчет"

End Sub
...
Рейтинг: 0 / 0
25.10.2009, 04:59
    #36270958
Insainer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton
Спасибо, мой проект почти готов... Только во втором варианте Dim пропущено. Осталось ошибки переработать...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / OptionButton / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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