Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用户窗体上的一组按钮的VBA循环_Excel_For Loop_Vba - Fatal编程技术网

Excel 用户窗体上的一组按钮的VBA循环

Excel 用户窗体上的一组按钮的VBA循环,excel,for-loop,vba,Excel,For Loop,Vba,我有一个带有一组单选按钮的用户表单。O当我单击“继续”按钮时,我希望它在每个按钮上迭代 我本以为我可以用for循环来做些什么,比如“为组中的每个按钮” 有办法做到这一点吗 编辑*********** 我决定将按钮按入阵列,并在阵列中循环。我发现这更合适,因为它允许访问所有OptionButton属性,而as循环通过控件则不允许 如果有更好的方法,我还是想知道。在道格的回答中,我想做的是: '... within For Each Loop If cCont.GroupName = "Gr

我有一个带有一组单选按钮的用户表单。O当我单击“继续”按钮时,我希望它在每个按钮上迭代

我本以为我可以用for循环来做些什么,比如“为组中的每个按钮”

有办法做到这一点吗

编辑***********

我决定将按钮按入阵列,并在阵列中循环。我发现这更合适,因为它允许访问所有OptionButton属性,而as循环通过控件则不允许

如果有更好的方法,我还是想知道。在道格的回答中,我想做的是:

'... within For Each Loop
    If cCont.GroupName = "GroupB" Then
        'blah blah blah
    End If
这不起作用,因为GroupName在声明为控件的cCont上不可用

再次感谢您的回复

Private Sub UserForm_Initialize()
            Dim cCont As Control

            For Each cCont In Me.Controls
                If TypeName(cCont) = "CommandButton" Or TypeName(cCont) = "OptionButton" Then
                    cCont.Caption = "Boobaloobie"
                End If
            Next cCont

好吧,这正是你要找的。非常适合我

我在谷歌搜索vba用户表单get控件,这是最重要的结果:


我决定给控件的名称添加一个后缀,表示它所在的组。
然后是一个简单的循环和检查后缀文本的问题

是的,有很多方法可以做到这一点。你能用你试过的代码编辑这个问题吗?比你快:P@Dai谢谢你的回答,顺便说一句,我必须把道格标记为正确的,因为他是第一个在那里。控制是关键!这就是我一直在寻找的!我一直在搜索GroupName等,但什么也没找到!我想我可以在条件中加上一个“And”来检查组名是否匹配得太对了?看起来你在解决这个问题上做得很好:如果你猜不到的话,我对使用userForms非常陌生,我认为我是解决这个问题的好方法之一,但似乎不是这样。如果将cCont声明为控件,则无法访问GroupName属性。如果我将cCont声明为OptionButton,因为这是我要检查的全部内容,那么在尝试通过Me.Controls循环时,它在for循环中给出了一个类型不匹配。我不是想让你告诉我该做什么,但我需要一些指导?!进一步解释。我有两组选项按钮,因此我需要检查它属于哪个组。我现在可以通过简单的计算选项按钮来解决这个问题,比如说在4之后-第一组按钮-我知道我在下一组,但这似乎是我需要做的一个漫长的过程。道格,干杯。奇怪的也许是某些控件不起作用了,我一定是在迭代一个不支持GroupName属性的控件,因为我刚刚复制并粘贴了您的代码,并更改了MsgBoxcCont.GroupName的Boobaloobie位,它一直工作,直到到达一个没有GroupName属性的组件。谢谢你的帮助!我会再试一次,因为它似乎对我需要做的事情更有效率。
Dim control As Control
For Each control In Me.Controls

    If TypeName( control ) = "RadioButton" Then

        ' do stuff
    End If

Next