Я создал форму, которая будет генерироваться динамически в зависимости от количества заполненных строк, находящихся в заданном диапазоне, и это работает без проблем.
Однако в этой форме я хочу иметь несколько флажков, которые будут соответствуют значениям в листе Excel. Представьте, что это своего рода параметр конфигурации.
Флажки создаются динамически, потому что я никогда не знаю, сколько будет настроек, и названы динамически, но я не могу передать значение флажка (T или F) вернуться к рабочему листу.
Код для создания пользовательской формы
Private Sub UserForm_Initialize()
Dim edtBox_n As Control
temp_lastRow = Worksheets("Sources").UsedRange.Rows.Count
temp_count = Application.WorksheetFunction.CountA(Range("A1:A" & temp_lastRow))
Me.Height = 60 + (temp_count * 24)
For x = 2 To temp_count
Set edtBox_n = Me.Controls.Add("Forms.label.1", "ca" & x, True)
With edtBox_n
.Caption = Worksheets("Sources").Range("A" & x).Value
.Top = 12 + (24 * x)
.Left = 18
.Height = 18
.Width = 170
End With
Set edtBox_n = Me.Controls.Add("Forms.checkbox.l", "cacb" & x, True)
With edtBox_n
.Caption = edtBox_n.Name ' check to find the name of the check box, usually blank
.Value = Worksheets("Sources").Range("B" & x).Value
.Top = 12 + (24 * x)
.Left = 210
.Height = 18
End With
Next x
End Sub
Код кнопки возврата / отправки для передачи значений флажков обратно в лист Excel
Private Sub CommandButton1_Click()
temp_lastRow = Worksheets("Sources").UsedRange.Rows.Count
temp_count = Application.WorksheetFunction.CountA(Range("A1:A" & temp_lastRow))
For x = 2 To temp_count
Worksheets("Sources").Range("B" & x).Value = "cacb" & x.Value
Next x
End Sub