Использование программно созданных кнопок - VBA
Формулировка задачи:
Добрый день.
Есть кнопка которая считает кол-во заполненных строк на листе и создает такое же количество кнопок на
форме с беря название с этих же ячеек. Вопрос в чем: как их дальше использовать?
Каждая кнопка обозначает подразделение и хотелось бы по клику что бы открывалась другая форма соответствующая подразделению.
Пробывал ссылаться по названию создаваемой кнопки, не получилось.
Заранее спасибо за помощь) т.к. всегда находится кто-то не равнодушный.
P.S. Знаю код простоват и многие найдут кучу более изящных решений.
P.S.S. X добавлен для создание кнопок под другой тип подразделений в другом столбце, просто еще не задействовал.
Листинг программы
- Private Sub CommandButton1_Click()
- Sheets("liti").Select
- R = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 2
- Dim i As Range
- For Each i In Range(Cells(1, 1), Cells(R, 1))
- If i.Value <> "" Then k = k + 1
- Next i
- h = 2
- Z = 0
- x = 10
- y = 50
- Do Until k = Z
- Dim NewCtrl As Control
- Set NewCtrl = Controls.Add("forms.commandbutton.1", comb)
- NewCtrl.Left = x
- NewCtrl.Top = y
- NewCtrl.Width = 100
- NewCtrl.Height = 25
- NewCtrl.Caption = Cells(h, 1)
- y = y + 50
- Z = Z + 1
- h = h + 1
- Loop
- End Sub
Решение задачи: «Использование программно созданных кнопок»
textual
Листинг программы
- Private Sub CommandButton1_Click()
- Dim t As Integer
- Dim r As Integer, k As Integer, i As Range, c As Integer
- Dim newctrl As Control, z As Integer, x As Integer, y As Integer, h As Integer
- Sheets("liti").Select
- If OptionButton1.Value = True Then t = 1 Else
- If OptionButton2.Value = True Then t = 2 Else
- If OptionButton3.Value = True Then t = 3
- r = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
- k = 0
- For Each i In Range(Cells(2, t), Cells(r, t))
- If i.Value <> "" Then k = k + 1
- Next i
- z = 0
- x = 50
- y = 150
- h = 2
- Do Until k = z
- Set newctrl = Controls.Add("forms.commandbutton.1", Button)
- newctrl.Left = x
- newctrl.Top = y
- newctrl.Width = 100
- newctrl.Caption = Cells(h, t)
- z = z + 1
- y = y + 50
- h = h + 1
- Loop
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д