Добрый день. Как написать цикл по checkbox в userform, чтобы он работал не для каждого(for each), а проходил каждый checkbox по очереди и выполнял действия с каждым по очереди? Мне нужно перебрать каждый чекбокс и вставить значения в ячейки из текстбокс1 и текстбокс2. Т.к. для каждого текстбокс несколько чекбоксов, то нужно для каждого чекбокса отдельная строка, куда вставлять данные. Мой код ниже:
Код
Dim x
Dim lr As Long
lr = .Cells(1, 1).End(xlUp).Row + 1
For each x in Me.Controls 'эту строку нужно изменить, чтобы цикл ходил по чекбоксам по очереди
If TypeOf x Is MSForms.CheckBox Then
If x = True Then
.Cells(lr, 1).Value = frmKust1.Value
.Cells(lr, 3) = rcNow1.Value
.Cells(lr, 4).Value = rcTo1.Value
If x = FlowSwitcherForm.cat_sh_1 Then Cells(lr, 2) = "S"
If x = FlowSwitcherForm.cat_fr_1 Then Cells(lr, 2) = "F"
If x = FlowSwitcherForm.cat_alc_1 = True Then Cells(lr, 2) = "A"
If x = FlowSwitcherForm.cat_of_1 = True Then Cells(lr, 2) = "FV"
If x = FlowSwitcherForm.cat_z_1 = True Then Cells(lr, 2) = "Fr"
lr = lr + 1
End If
End If
Next
БМВ, у меня всего 5 чекбоксов. Для каждого чекбокск нужна отдельная строка. Если заполнено больше 1 чекбокса, то он проходит по ним 5 раз и добавляет 5 строк, вписывая в столбце со значением чекбокса последний заполненный. Завтра сделаю файл пример
Dim x As Control, lr&, iStr$
lr = .Cells(1, 1).End(xlUp).Row + 1
For Each x In Me.Controls
If TypeOf x Is MSForms.CheckBox Then
If x = True Then
.Cells(lr, 1).Value = frmKust1.Value
.Cells(lr, 3) = rcNow1.Value
.Cells(lr, 4).Value = rcTo1.Value
'вместо 'Первый Второй и т.п.' впишите ИМЕНА своих чекбоксов
Select Case x.Name
Case "Первый": iStr = "S"
Case "Второй": iStr = "F"
Case "Третий": iStr = "A"
Case "Четвертый": iStr = "FV"
Case "Пятый": iStr = "Fr"
End Select
Cells(lr, 2) = iStr
lr = lr + 1
End If
End If
Next
Согласие есть продукт при полном непротивлении сторон
RAN, а что с ифом не так? Юрий М, мне нужно, чтобы макрос проделывал нижнюю часть кода со вставкой в ячейки по каждому чекбоксу отдельно, т.е. выбрал непустой чекбокс, сделал кол, перешёл к следующему. В цикле for each он проверяет каждый цикл все чекбоксы и вставляет последний заполненный. Sanja, Сейчас нет доступа к файлу, чтобы проверить, завтра отпишусь.
Юрий М, я имел в виду, что каждый прогон цикла это проверка всех моих чекбоксов (по крайней мере у меня в макросе так работает). Может быть проблема не в цикле, а действительно в ивах. Если есть предположения, буду рад их выслушать
Да все так (или не так) Он работает так, как вы его написали. А то, что он делает именно то, что ему велено, а не то, что он должен делать по вашему мнению, так это не его проблема.
RAN, Да, он работает так, как я его написал, но работает не так как задумано. я сюда и написал, потому что у меня что-то не работает. Что конкретно я не знаю. Если sanja уже дал мне решение, то значит можно не просматривать эту тему, но вы продолжаете писать, значит вам, видимо, есть чем помочь. Если же нет, то не понимаю зачем вы пишете сюда своё недовольство моим вопросом.