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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2010, 13:49   #1
mars56
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 58
По умолчанию как OptionButton сделать не доступними несколько CheckBox-ов

помогите! имеется несколько OptionButton-ов как реализовать в VBA чтоб при нажатии на OptionButton1 стали недоступними CheckBox1-CheckBox10, при нажатии OptionButton2 стали недоступними CheckBox11-CheckBox20, и т.д. Прописывать все CheckBox-ы по отдельности не вариант. Заранее спасибо всем кто поможет
mars56 вне форума Ответить с цитированием
Старый 13.01.2010, 13:56   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Сделать это несложно.
Но вот воссоздавать файл с формой и чекбоксами ради нескольких строк кода нет ни малейшего желания...

Будет файл с готовой формой - будем думать.
EducatedFool вне форума Ответить с цитированием
Старый 13.01.2010, 13:58   #3
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Положите файлик с формой. Так будет лучше и удобнее!
Maxx вне форума Ответить с цитированием
Старый 13.01.2010, 14:19   #4
mars56
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 58
По умолчанию

да ну мнеб хотябы пару строк дальше сам разберусь. Вот на пример нажимаем OptionButton1 недоступны CheckBox1-CheckBox3
mars56 вне форума Ответить с цитированием
Старый 13.01.2010, 14:28   #5
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Вот Вам пара строк.
Код:
dim i as integer
For i = 1 to 3:me.controls("CheckBox" & i).Enabled = false:next i
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 13.01.2010, 14:35   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ну, раз Вам так лень создать форму с чекбоксами, пришлось сделать самому.
Мне же больше нечем заняться, кроме как делать для Вас примеры файлов...



Вот весь код:

Код:
Private Sub OptionButton1_Click(): Макрос: End Sub
Private Sub OptionButton2_Click(): Макрос: End Sub
Private Sub OptionButton3_Click(): Макрос: End Sub

Sub Макрос()
    Select Case True
        Case Me.OptionButton1: n1 = 1: n2 = 10
        Case Me.OptionButton2: n1 = 11: n2 = 20
        Case Me.OptionButton3: n1 = 21: n2 = 30
        Case Else: n1 = 5: n2 = 24
    End Select
    For i = 1 To 30
    Me.Controls("CheckBox" & i).Enabled = i > n2 Or i < n1
    Next
End Sub

Private Sub UserForm_Initialize()
    For i = 1 To 30
    Me.Controls("CheckBox" & i).Caption = "Чекбокс номер " & i
    Next
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 13.01.2010, 14:56   #7
mars56
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 58
По умолчанию

Спасиб Вам большущее, сейчас буду пробывать делать

Последний раз редактировалось mars56; 13.01.2010 в 14:58.
mars56 вне форума Ответить с цитированием
Старый 14.01.2010, 08:56   #8
mars56
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 58
По умолчанию

Что то у меня не получается. Делаю все как в примере только с разницей что все CheckBox и OptionButton на листе экселя а не на форме. Возникает ошибка на этой сторке Me.Controls("CheckBox" & i).Enabled = i > n2 Or i < n1 "Metod or data not found". Подскажите как эт дело поправить
mars56 вне форума Ответить с цитированием
Старый 14.01.2010, 09:58   #9
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от mars56 Посмотреть сообщение
Что то у меня не получается. Делаю все как в примере только с разницей что все CheckBox и OptionButton на листе экселя а не на форме.
А вот для этого надо было изначально указывать, что объекты на листе расположены, а не на форме.

Код:
Sub Макрос()
Dim n1 As Integer, n2 As Integer, i As Integer
    Select Case True
        Case ActiveSheet.DrawingObjects("Option Button 1").Value: n1 = 1: n2 = 10
        Case ActiveSheet.DrawingObjects("Option Button 2").Value: n1 = 11: n2 = 20
        Case ActiveSheet.DrawingObjects("Option Button 3").Value: n1 = 21: n2 = 30
        Case Else: n1 = 5: n2 = 24
    End Select
    For i = 1 To 30
    ActiveSheet.DrawingObjects("Check Box " & i).Enabled = i > n2 Or i < n1
    Next
End Sub
Номера объектов сами вычисляйте.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 14.01.2010, 11:46   #10
mars56
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 58
По умолчанию

а теперь вот пишет "не возможно получить свойство DrawingObjects" в этой строчке Case ActiveSheet.DrawingObjects("Option Button 1").Value:
mars56 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать "Несколько значений для столбца подстановок" lamerk Microsoft Office Access 2 30.11.2009 20:41
Как сделать checkbox случайным? Serg-Grin Общие вопросы Delphi 9 20.10.2009 21:49
КАк сделать Палитру компонентов в несколько рядов? Izhic Компоненты Delphi 0 02.07.2009 14:05
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24
сделать так, чтобы CheckBox и CheckListBox нельзя было отмечать вручную Washington Компоненты Delphi 7 24.03.2007 16:59