用计数器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
。
你也可以用索引计数器来做到这一点。