Использование программно созданных кнопок - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день. Есть кнопка которая считает кол-во заполненных строк на листе и создает такое же количество кнопок на форме с беря название с этих же ячеек. Вопрос в чем: как их дальше использовать? Каждая кнопка обозначает подразделение и хотелось бы по клику что бы открывалась другая форма соответствующая подразделению. Пробывал ссылаться по названию создаваемой кнопки, не получилось.
Листинг программы
  1. Private Sub CommandButton1_Click()
  2. Sheets("liti").Select
  3. R = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 2
  4. Dim i As Range
  5. For Each i In Range(Cells(1, 1), Cells(R, 1))
  6. If i.Value <> "" Then k = k + 1
  7. Next i
  8. h = 2
  9. Z = 0
  10. x = 10
  11. y = 50
  12. Do Until k = Z
  13. Dim NewCtrl As Control
  14. Set NewCtrl = Controls.Add("forms.commandbutton.1", comb)
  15. NewCtrl.Left = x
  16. NewCtrl.Top = y
  17. NewCtrl.Width = 100
  18. NewCtrl.Height = 25
  19. NewCtrl.Caption = Cells(h, 1)
  20. y = y + 50
  21. Z = Z + 1
  22. h = h + 1
  23. Loop
  24. End Sub
Заранее спасибо за помощь) т.к. всегда находится кто-то не равнодушный. P.S. Знаю код простоват и многие найдут кучу более изящных решений. P.S.S. X добавлен для создание кнопок под другой тип подразделений в другом столбце, просто еще не задействовал.

Решение задачи: «Использование программно созданных кнопок»

textual
Листинг программы
  1. Private Sub CommandButton1_Click()
  2. Dim t As Integer
  3.     Dim r As Integer, k As Integer, i As Range, c As Integer
  4.         Dim newctrl As Control, z As Integer, x As Integer, y As Integer, h As Integer
  5. Sheets("liti").Select
  6.     If OptionButton1.Value = True Then t = 1 Else
  7.     If OptionButton2.Value = True Then t = 2 Else
  8.     If OptionButton3.Value = True Then t = 3
  9.         r = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
  10.         k = 0
  11.         For Each i In Range(Cells(2, t), Cells(r, t))
  12.             If i.Value <> "" Then k = k + 1
  13.             Next i
  14.     z = 0
  15.     x = 50
  16.     y = 150
  17.     h = 2
  18.         Do Until k = z
  19.             Set newctrl = Controls.Add("forms.commandbutton.1", Button)
  20.                 newctrl.Left = x
  21.                 newctrl.Top = y
  22.                 newctrl.Width = 100
  23.                 newctrl.Caption = Cells(h, t)
  24.                     z = z + 1
  25.                     y = y + 50
  26.                     h = h + 1
  27.         Loop
  28.    
  29. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут