我想通过引用另一个变量

时间:2015-11-03 17:35:40

标签: vba loops variables for-loop indexing

首先看一下:

Dim Item1 As String
Dim Item2 As String
Dim Item3 As String
Dim Item4 As String
Dim Item5 As String

'Add text to these strings within the script

基本上,我有一个变量列表,它们使用一个简单的数字来保持它们分开。

我将这些变量打印到用户表单中,并将一些格式应用于这些表单。用户表单中也包含相同的数字。

我在userform中的代码看起来像这样。

Form1.Caption = Item1
Form1.BackColor = 'Condition based on content of Item1
Label1.Width = 'Condition based on content of Item1
Form2.Caption = Item2
Form2.BackColor = 'Condition based on content of Item1
Label2.Width = = 'Condition based on content of Item1

'...and so on and so forth...

实际使用10个变量并且有一些case语句来处理上面引用的条件,因此代码变得相当冗长。

我想用一个简单的:

for i = 1 to 5

然后在userform中 ,可能看起来像:

Form{i}.Caption = Item{i}
Form{i}.BackColor = 'Condition based on content of Item{i}
Label{i}.Width = 'Condition based on content of Item{i}

这有意义吗?我用于一些基本PC宏的程序“AutoHotKey”具有此功能 - 如果我记得的格式只是

form%_i

但显然这是AHK,这是VBA !!

我不知道它是否能够完成,但我经常遇到这个问题并且获得一些解决方案很好......

1 个答案:

答案 0 :(得分:1)

对于控件,您可以使用以下内容:

myForm.Controls("Label" & i).Width

有关引用用户表单的信息,请参阅:http://www.ozgrid.com/forum/showthread.php?t=63433

Dim frm As Object

On Error Resume Next
Set frm = UserForms.Add("UserForm" & 1)
On Error GoTo 0

If Not frm Is Nothing Then
    Debug.Print "Got form: " & frm.Caption
Else
    Debug.Print "No form with that name!"
End If