通过对象名称动态访问对象属性

时间:2018-10-11 11:25:39

标签: excel vba excel-vba

我有几个文本框要循环显示,并在用户单击按钮时设置其文本值,每次单击一个框,

它们的名称都相同,并在末尾添加了数字

Light_Number_01
Light_Number_02
Light_Number_03
Light_Manufacturer_01
Light_Manufacturer_02
Light_Manufacturer_03

我想将所有具有相同数字结尾的文本框设置为相同的点击次数, 我目前的思维过程就是要做这样的事情

Light_Pointer = 01
Light_Number_Pointer = "Light_Number_" & Light_Pointer
Light_Manufacturer_Pointer = "Light_Manufacturer_" & Light_Pointer
Light_Number_Pointer.Text = 'Logic from other parts of the program
Light_Manufacturer_Pointer.Text = 'Logic from other parts of the program

我希望能够做类似的事情,那就是按其名称访问文本框

我希望尽可能简化这一过程,因为将来可能由比我本人还要经验更少的程序员来维护,但是如果这行不通,我愿意考虑使用更复杂的解决方案

1 个答案:

答案 0 :(得分:1)

您可以使用Controls()来按其名称访问控件

Dim i As Long
i = 2
MyForm.Controls("Light_Number_" & Format$(i, "00")).Text = ""         'same like MyForm.Light_Number_02.Text
MyForm.Controls("Light_Manufacturer_" & Format$(i, "00")).Text = ""   'same like MyForm.Light_Manufacturer_02.Text

请注意,Format$(i, "00")确保将i始终转换为前导零的2位数字(如果i小于10)。
这样可以确保您可以使用例如从For i = 1 To 10开始计数的循环并自动添加前导零。