使用UserForm控件名称的For Next Loop值构建字符串

时间:2017-03-11 20:43:31

标签: excel vba excel-vba for-loop userform

我正在尝试构建值

If UserForm1.p1OptionButton.Value = True

p1OptionButton中的1是For Next循环计数器的值,但我遇到了错误,但我尝试构造它。如果我使用

Dim iPart As Integer
For iPart = 1 to 6
If "UserForm1.p" & iPart & "OptionButton.Value" = True
.... blah blah blah rest of the code
Next iPart

我收到此错误:

  

运行时错误13类型不匹配。

如果我离开“从字符串的其他部分出来,它也不起作用。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

例如,假设您的表单上有6个OptionButtonCommandButton,那么您可以根据下面的代码示例迭代选项。如果您将变量设置为OptionButton,然后将其中一个表单Controls分配给该变量,则可以访问其属性,例如<{1}}和Name等非常容易。

Value

答案 1 :(得分:0)

自从我做了任何VBA以来已经有很长一段时间了,所以可能有点生气:)

您得到的错误是因为您正在将String与布尔值进行比较,因此类型不匹配

您可以尝试使用以下代码动态访问控件:

Forms("UserForm1").Controls("p" & iPart & "OptionButton").Value = True

答案 2 :(得分:-1)

我相信您正在尝试将字符串与布尔值进行比较,因此它无法以您希望的方式工作。如果你希望它更好地工作,你可以做类似的事情只是简单地浏览每个可能的值(IE UserForm1.p1OptionButton.Value,UserForm1.p2OptionButton.Value等)