Sgd*_*dva 1 excel vba excel-vba userform
背景:
我使用标准化名称在userform中有一组对象(对于此示例Listbox对象),我想使用计数器循环动态重命名它们.

问题:
如果我要问的是甚至可能的话,我还没想办法,但是,我想确认一下.
解决方法:
到目前为止没有任何内容,就像我说的那样(参考上图)我需要一种方法来设置for循环中对象的值,如下所示:
For CounterItems = 1 To 18 'Hours in Template
ListBox_Time(CounterItems).Value="Dummy" & CounterItems
Next CounterHours
Run Code Online (Sandbox Code Playgroud)
但是,我对如何这样做(或者如果它是可以实现的)毫无头绪.
问题:
有没有办法使用计数器来转换变量/对象?
不,您在使用userform时无法编辑名称,您将收到错误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
Run Code Online (Sandbox Code Playgroud)
但是当你尝试写入name属性时,你会出错.您可以打印名称或设置其他属性,但据我所知,这不是您可以做的事情.