excel - 用计数器选择变量对象

标签 excel userform vba

背景:
我在用户表单中有一个使用标准化名称的对象集合(对于此示例列表框对象),我想使用计数器循环动态重命名它们。
enter image description here

问题:
如果我要问的问题是否可能,我还没有想出办法,但是,我想确认一下。
解决办法:
到目前为止,没有什么,就像我说的(引用上图)我需要一种方法来设置 for 循环中对象的值,如下所示:

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

但是,我对如何做到这一点(或者是否可以实现)一无所知。
问题:
有没有办法使用计数器来转换变量/对象?

最佳答案

不,您不能在使用用户窗体时编辑名称,您将得到 error 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 属性时会出错。您可以打印名称或设置其他属性,但据我所知,这不是您可以做的事情。

关于excel - 用计数器选择变量对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986941/

相关文章:

excel - 如何在 Excel 中的一组值中找到*最*平均值/最接近平均值的值?

python - 使用 openpyxl 将边框应用于范围内的所有单元格

vba - 如何编写宏来按多个值过滤整个工作簿中的列?

Excel VBA : Frame doesn't appear in front of ListBox

vba - 更改私有(private)变量或定义范围变量。 Excel VBA

vba - 在 MS Access 的多个控件中使用相同的事件代码

r - 错误 : zipping up workbook failed when trying to write. xlsx

vba - 向对象添加事件处理程序

if语句中的VBA屏幕更新

excel - 字典键中的重复项。合并字典值