Не получается циклом через переменную поставить у чек-боксов листа всем 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]
Не получается циклом через переменную поставить у чек-боксов листа всем Value равным True. Через переменную было намерение менять номер чекбокса. Свои варианты не пишу, ни амперсанты, ни кавычки не помогли. Тут надо синтаксис знать наверняка, если такой вариант вообще можно реализовать. [vba]
Код
With Worksheets("Лист1") 'For i=1 To 3 .CheckBox1.Value = True .CheckBox2.Value = True .CheckBox3.Value = True 'Next i End With
В 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 thenLeanna
Лучше день потерять, потом за пять минут долететь!
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
Если надо только некоторые, то устройте каким-н образом проверку имени 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
Если надо только некоторые, то устройте каким-н образом проверку имени 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]
Код
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
устройте каким-н образом проверку имени if iObject.Name = "Checkbox" & i then
Причина - неосмысленно скопировал в код "Checkbox", а надо - "CheckBox".
И выборочное включение тоже работает. Допущена банальная ошибка в синтаксисе. Правильный вариант:
[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