Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Назначить Значение чекбокса в цикле - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Назначить Значение чекбокса в цикле
Vostok Дата: Среда, 11.02.2015, 10:43 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 211
Репутация: 1 ±
Замечаний: 40% ±

Excel 2010
Не получается циклом через переменную поставить у чек-боксов листа всем Value равным True. Через переменную было намерение менять номер чекбокса. Свои варианты не пишу, ни амперсанты, ни кавычки не помогли. Тут надо синтаксис знать наверняка, если такой вариант вообще можно реализовать.
[vba]
Код
With Worksheets("Лист1")
'For i=1 To 3
.CheckBox1.Value = True
.CheckBox2.Value = True
.CheckBox3.Value = True
'Next i
End With
[/vba]


"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"

Сообщение отредактировал Vostok - Среда, 11.02.2015, 10:45
 
Ответить
СообщениеНе получается циклом через переменную поставить у чек-боксов листа всем Value равным True. Через переменную было намерение менять номер чекбокса. Свои варианты не пишу, ни амперсанты, ни кавычки не помогли. Тут надо синтаксис знать наверняка, если такой вариант вообще можно реализовать.
[vba]
Код
With Worksheets("Лист1")
'For i=1 To 3
.CheckBox1.Value = True
.CheckBox2.Value = True
.CheckBox3.Value = True
'Next i
End With
[/vba]

Автор - Vostok
Дата добавления - 11.02.2015 в 10:43
Leanna Дата: Среда, 11.02.2015, 12:44 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
В Userform есть для таких случаев Controls. На листе оно не работает(
Может подойдет перебрать все Checkbox и поставить им галочки?
[vba]
Код
Sub chbxTrue()
For Each iObject In ActiveSheet.OLEObjects
     If TypeOf iObject.Object Is MSForms.CheckBox Then
         iObject.Object.Value = True
     End If
Next
End Sub
[/vba]
Если надо только некоторые, то устройте каким-н образом проверку имени if iObject.Name = "Checkbox" & i then


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеВ Userform есть для таких случаев Controls. На листе оно не работает(
Может подойдет перебрать все Checkbox и поставить им галочки?
[vba]
Код
Sub chbxTrue()
For Each iObject In ActiveSheet.OLEObjects
     If TypeOf iObject.Object Is MSForms.CheckBox Then
         iObject.Object.Value = True
     End If
Next
End Sub
[/vba]
Если надо только некоторые, то устройте каким-н образом проверку имени if iObject.Name = "Checkbox" & i then

Автор - Leanna
Дата добавления - 11.02.2015 в 12:44
krosav4ig Дата: Среда, 11.02.2015, 12:52 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а если чекбоксы не activex, а элементы формы, то
[vba]
Код
Sub asd()
     Dim cbox As CheckBox
     For Each cbox In Worksheets("Лист1").CheckBoxes
         cbox.Value = True
     Next
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеа если чекбоксы не activex, а элементы формы, то
[vba]
Код
Sub asd()
     Dim cbox As CheckBox
     For Each cbox In Worksheets("Лист1").CheckBoxes
         cbox.Value = True
     Next
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 11.02.2015 в 12:52
DJ_Marker_MC Дата: Среда, 11.02.2015, 13:07 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
И еще вариант:
[vba]
Код
Sub iTrueCheckBox()
     Dim o As Object
     For Each o In  Worksheets("Лист1").OLEObjects
         If InStr(1, o.Name, "CheckBox") > 0 Then
             o.Object.Value = True
         End If
     Next
End Sub
[/vba]
 
Ответить
СообщениеИ еще вариант:
[vba]
Код
Sub iTrueCheckBox()
     Dim o As Object
     For Each o In  Worksheets("Лист1").OLEObjects
         If InStr(1, o.Name, "CheckBox") > 0 Then
             o.Object.Value = True
         End If
     Next
End Sub
[/vba]

Автор - DJ_Marker_MC
Дата добавления - 11.02.2015 в 13:07
krosav4ig Дата: Среда, 11.02.2015, 13:55 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
есть для таких случаев Controls. На листе оно не работает(

но можно потанцевать с бубном и все получится)
суем на лист Activex обьект MS forms 2.0 frame, в него нужные контролы, в потом в модуле листа[vba]
Код
     Dim ctrl As MSForms.Control
     For Each ctrl In Me.OLEObjects("frame1").Object.Controls
         If TypeOf ctrl Is MSForms.CheckBox Then ctrl.Value = True
     Next
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
есть для таких случаев Controls. На листе оно не работает(

но можно потанцевать с бубном и все получится)
суем на лист Activex обьект MS forms 2.0 frame, в него нужные контролы, в потом в модуле листа[vba]
Код
     Dim ctrl As MSForms.Control
     For Each ctrl In Me.OLEObjects("frame1").Object.Controls
         If TypeOf ctrl Is MSForms.CheckBox Then ctrl.Value = True
     Next
[/vba]

Автор - krosav4ig
Дата добавления - 11.02.2015 в 13:55
Vostok Дата: Четверг, 12.02.2015, 10:52 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 211
Репутация: 1 ±
Замечаний: 40% ±

Excel 2010
Если надо только некоторые, то устройте каким-н образом проверку имени if iObject.Name = "Checkbox" & i then

Всё работает, правда с заметным замедлением при наличии , скажем 12 чек-боксов. Хотел поэкспериментировать с выборочным включением, но не получилось. У меня в знаниях по UserForms пока пробел, мог и с синтаксисом ошибиться. Пример был самый простой. На листе три чек-бокса, хотел включить только второй:
[vba]
Код
Sub chbxTrue()
Worksheets("Черновик").Activate
Dim iObject As OLEObject
Dim i As Long: i = 2

For Each iObject In ActiveSheet.OLEObjects
       If TypeOf iObject.Object Is MSForms.CheckBox Then
             If iObject.Name = "Checkbox" & i Then
                    iObject.Object.Value = True
             End If
       End If
Next
End Sub
[/vba]


"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"

Сообщение отредактировал Vostok - Четверг, 12.02.2015, 11:00
 
Ответить
Сообщение
Если надо только некоторые, то устройте каким-н образом проверку имени if iObject.Name = "Checkbox" & i then

Всё работает, правда с заметным замедлением при наличии , скажем 12 чек-боксов. Хотел поэкспериментировать с выборочным включением, но не получилось. У меня в знаниях по UserForms пока пробел, мог и с синтаксисом ошибиться. Пример был самый простой. На листе три чек-бокса, хотел включить только второй:
[vba]
Код
Sub chbxTrue()
Worksheets("Черновик").Activate
Dim iObject As OLEObject
Dim i As Long: i = 2

For Each iObject In ActiveSheet.OLEObjects
       If TypeOf iObject.Object Is MSForms.CheckBox Then
             If iObject.Name = "Checkbox" & i Then
                    iObject.Object.Value = True
             End If
       End If
Next
End Sub
[/vba]

Автор - Vostok
Дата добавления - 12.02.2015 в 10:52
Vostok Дата: Пятница, 13.02.2015, 11:40 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 211
Репутация: 1 ±
Замечаний: 40% ±

Excel 2010
И выборочное включение тоже работает. Допущена банальная ошибка в синтаксисе. Правильный вариант:

устройте каким-н образом проверку имени if iObject.Name = "Checkbox" & i then

Причина - неосмысленно скопировал в код "Checkbox", а надо - "CheckBox".


"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"

Сообщение отредактировал Vostok - Пятница, 13.02.2015, 11:41
 
Ответить
СообщениеИ выборочное включение тоже работает. Допущена банальная ошибка в синтаксисе. Правильный вариант:

устройте каким-н образом проверку имени if iObject.Name = "Checkbox" & i then

Причина - неосмысленно скопировал в код "Checkbox", а надо - "CheckBox".

Автор - Vostok
Дата добавления - 13.02.2015 в 11:40
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!