Я создаю лист Excel, в котором переключатели автоматически генерируются на основе значения определенного параметра. Пожалуйста, обратитесь к этому для ясного понимания:
Группа радиокнопок копируется n
количество раз. где n
- количество строк, ссылающихся на параметр.
Каждые переключатели в этой автоматически сгенерированной матрице должны быть проверены на соответствие условию, и для одной из двенадцати переключателей должно быть установлено значение True в одной группе, которая соответствует условию. Основное осложнение заключается в том, что каждая группа переключателей копируется в требуемые строки в соответствии с требованием, и поэтому переключатели генерируются n * 12 раз, и я не знаю, как запрограммировать каждую переключаемую кнопку, которая генерируется автоматически.
Мне нужно знать, какую функцию я могу использовать для выполнения моего требования.
Я создал матрицу со следующим кодом:
Dim n, m, i, j, x, k, a As Integer
n = (Sheets("ALLO").Range("E4").Value) * 2
x = Sheets("ALLO").Range("E3").Value
m = (Sheets("ALLO").Range("E5").Value) + 1
a = m
For i = 2 To n Step 2
Sheets("Dummy_Result").Range("A2:M2").Copy Destination:=Sheets("Results").Range("A" & i)
Next i
For j = 3 To n Step 2
Sheets("Dummy_Result").Range("A3:M3").Copy Destination:=Sheets("Results").Range("A" & j)
Next j
For k = n + 1 To m Step 1
Sheets("Dummy_Result").Range("A3:M3").Copy Destination:=Sheets("Results").Range("A" & k)
Next k
End Sub
Моя обновленная программа, для автоматического создания кнопок для диапазона, зависящего от значения «m». Количество сгенерированных кнопок должно быть прямо пропорционально значению «m». Эта программа не работает, когда я использую динамический диапазон вместо фиксированного (как предложено Mr.JosephC)
Sub Test()
Dim n, m, i, j, x, k, a As Integer
n = (Sheets("ALLO").Range("E4").Value) * 2 'No of Tack stations
x = Sheets("ALLO").Range("E3").Value
m = (Sheets("ALLO").Range("E5").Value) + 1
a = m
For i = 2 To n Step 2 'Correct
Sheets("Dummy_Result").Range("A2").Copy Destination:=Sheets("Results_1").Range("A" & i)
Call AddOptionButtons(Sheets("Results_1").Range("B & m: M & m"))
Next i
For j = 3 To n Step 2
Sheets("Dummy_Result").Range("A3").Copy Destination:=Sheets("Results_1").Range("A" & j)
Call AddOptionButtons(Sheets("Results_1").Range("B & m: M & m"))
Next j
For k = n + 1 To m Step 1
Sheets("Dummy_Result").Range("A3").Copy Destination:=Sheets("Results_1").Range("A" & k)
Call AddOptionButtons(Sheets("Results_1").Range("B & m: M & m"))
Next k
End Sub
Private Sub AddOptionButtons(ByRef TargetRange As Range)
Dim oCell As Range
For Each oCell In TargetRange
oCell.RowHeight = 20
oCell.ColumnWidth = 6
Dim oOptionButton As OLEObject
Set oOptionButton = TargetRange.Worksheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Left:=oCell.Left + 1, Top:=oCell.Top + 1, Width:=15, Height:=18)
oOptionButton.Name = "ob" & oCell.row & "_" & oCell.Column
'oOptionButton.Object.Caption = "Button" oOptionButton.Object.GroupName = "grp" & oCell.Top
Next
End Sub**strong text**
Пожалуйста, обратитесь к пустышке здесь