用计数器selectvariables对象

背景:
我有一个使用标准化名称的用户窗体中的对象的集合(对于此示例中的Listbox对象),我想用一个计数器循环dynamic地重命名它们。 在这里输入图像说明

问题:
如果我所要求的甚至是可能的,我还没有想出办法,但是我想确认一下。 解决scheme:
到目前为止,就像我说的(参考上面的图片),我需要一种方法来设置for循环内的对象的值,如下所示:

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

但是,我怎么这样做(或者如果是可以实现的),我是无能为力的。
题:
有没有办法使用计数器来投射variables/对象?

用于用户窗体上的ListBox控件

如果你想通过数字只改变某些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 

但是当您尝试写入名称属性时,您会出错。 您可以打印名称或设置其他属性,但是据我所知,这不是您可以执行的操作。

我把他们Shapes并testing他们的预定义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

你也可以用索引计数器来做到这一点。