Выбрать переменный объект с помощью счетчика

Задний план:
У меня есть набор объектов (для этого примера объектов Listbox) в пользовательской форме с использованием стандартизованных имен, я бы хотел переименовать их динамически с использованием цикла счетчика. введите описание изображения здесь

Проблема:
Я не понял пути, если то, что я прошу, возможно, однако, я хотел бы подтвердить это. Решение:
Ничего до сих пор, как я уже говорил (см. Изображение выше) Мне нужен способ установить значения объектов в цикле for, что-то вроде этого:

For CounterItems = 1 To 18 'Hours in Template ListBox_Time(CounterItems).Value="Dummy" & CounterItems Next CounterHours 

Однако я не знаю, как это сделать (или, если это возможно).
Вопрос:
Есть ли способ использовать счетчик для создания переменной / объекта?

Для использования с элементами управления ListBox в UserForm

Если вы хотите изменить только некоторые элементы управления ListBox по номеру:

 Public Sub ListBoxNameChange() Dim ctrl As Control Dim ctrlName As String, ctrlNum As Integer For Each ctrl In Me.Controls If TypeName(ctrl) = "ListBox" Then ctrlName = ctrl.Name ctrlNum = CInt(Replace(ctrlName, "ListBox_Time", "")) If ctrlNum > 0 And ctrlNum < 19 Then ctrl.AddItem "Dummy" & ctrlNum, 0 End If End If Next ctrl End Sub 

Если вы хотите изменить ВСЕ элементы управления ListBox:

 Public Sub ListBoxNameChange2() Dim ctrl As Control Dim ctrlName As String For Each ctrl In Me.Controls If TypeName(ctrl) = "ListBox" Then _ ctrl.AddItem "Dummy" & Replace(ctrl.Name, "ListBox_Time", ""), 0 Next ctrl End Sub 

Нет, вы не можете редактировать имя во время использования пользовательской формы, вы получите ошибку 382

То, что вы хотели бы сделать, это

 Option Explicit Sub test() Dim myForm As UserForm Set myForm = UserForm1 Dim myCtrl As Control Dim i As Long Dim myCount As Long myCount = 1 For Each myCtrl In myForm.Controls If TypeName(myCtrl) = "ListBox" Then myCtrl.Name = "Dummy" & myCount 'error myCount = myCount + 1 End If Next End Sub 

Но вы будете ошибаться, когда пытаетесь написать свойство name. Вы можете распечатать имена или установить другие свойства, но это не то, что вы можете сделать, насколько я знаю.

Я рассматриваю их как Shapes и проверяю их предопределенные Names :

 Sub ShapeRenamer() Dim s As Shape For Each s In ActiveSheet.Shapes If s.Name = "List Box 6" Then s.Name = "Sixth" Next s End Sub 

До:

введите описание изображения здесь

и после:

введите описание изображения здесь

Вы обновили бы это, чтобы изучить Shapes в пользовательской форме.

Вы также можете сделать это с помощью счетчика индексирования.

  • Показать текущее время (EST)
  • VBA. Создайте миниатюру в Loadpicture () в пользовательской форме.
  • Excel Macro Userform - отдельный код, обрабатывающий несколько флажков
  • Excel 2013 64 бит - Пользовательская форма VBA - добавьте 28 дней до даты текстового поля и отобразите в другом текстовом поле
  • Отключить / включить вкладку в Multitab на основе значения флажка-EXCEL
  • Добавление изображения в рабочий лист из пользовательской формы (excel vba)
  • Как установить FileDialog, чтобы не разрешать двойной щелчок
  • Сгенерированное кодом командная кнопка в vba Userform_initialize () не реагирует
  • Экзамен Excel 2016 VBA активируется, но затем деактивируется
  • Установите фокус обратно в окно приложения после показа пользовательской формы
  • Не удается закрыть пользовательскую форму
  • Давайте будем гением компьютера.