通过更改一个数字在Excel宏中执行多个命令

时间:2017-04-18 06:29:28

标签: excel vba

上下文:我在用户表单中有10个文本框(ID1到ID10)。 userform还有一个清除按钮,允许用户清除以前在文本框中输入的所有值。为此,我在清除按钮中插入了下面提到的命令。

我有多个命令具有相同的命名法,但数字随每个文本框而变化。我希望输入一个命令来改变数字并执行所有命令。

下面给出的简单示例:我希望只输入一个命令而不是下面的命令:

Private Sub btnClear_Click()

'Empty ID1
ID1.Value = ""

'Empty ID2
ID2.Value = ""

'Empty ID3
ID3.Value = ""

。 。 。等等

'Empty ID10
ID10.Value = ""

End Sub

我知道有一个解决方案,但是因为我是新手在谷歌上找不到正确的关键词。对不起,如果已经存在。任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

你的意思是这样吗?

For i=1 to 4
    str="ID" & i & ".Value = ''"
    Evaluate(str)
Next

答案 1 :(得分:0)

如果这些是UserForm上的TextBoxes,您将能够从UserForm的代码模块中的宏执行以下操作:

Private Sub btnClear_Click()
    Dim i As Long
    For i = 1 To 10
        Me.Controls("ID" & i).Value = ""
    Next 
End Sub

无法动态生成变量和/或对象名称,但由于Controls集合可以通过控件的“名称”进行索引,因此它提供了另一种获取对象的方法。 / p>

添加注释中提到的“选项框”(OptionButtons?`CheckBoxes?)的代码,并将TextBox名称更改为以“C”结尾:

Private Sub btnClear_Click()
    Dim i As Long
    For i = 1 To 10
        Me.Controls("ID" & i & "C").Value = ""
        Me.Controls("OB" & i).Value = False
    Next 
End Sub