2016-12-06 2 views
-1

У меня есть пользовательская форма с группой переключателей. O, когда я нажимаю кнопку «Продолжить», я хочу, чтобы она перебирала каждую кнопку.VBA группа кнопок на UserForm

Я бы подумал, что я мог бы сделать что-то вроде цикла for, например «Для каждой кнопки в группе»!

Есть ли способ сделать это?

редактировать ***********

Я решил нажать кнопки в массивы и цикл по массиву. Я обнаружил, что это было более подходящим, так как оно разрешало доступ ко всем свойствам OptionButton, где, поскольку циклов с помощью элементов управления не было.

Если есть лучший способ сделать это, я все равно хотел бы знать. То, что я хотел сделать в ответ Дуга ниже был:

'... within For Each Loop 
    If cCont.GroupName = "GroupB" Then 
     'blah blah blah 
    End If 

Это не работает, как GroupName не был доступен на cCont, который был объявлен как «Контроль».

Еще раз спасибо за ответы!

+1

Да, есть много способов сделать это. Вы можете отредактировать вопрос с помощью кода, который вы пробовали? – Comintern

ответ

1
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 

Хорошо, это именно то, что вы ищете. Работы для меня совершенно

+0

«Контроль» является ключом! Это то, что я искал! Я искал имя GroupName и ничего не нашел! Думаю, я мог бы добавить «И» к условию, чтобы проверить, правильно ли совпадает с GroupName? – Mike

+0

кажется, что вы хорошо на пути к его решению :) –

+0

Я очень новичок в использовании userForms (если вы не могли догадаться), и я думал, что у меня хорошо один способ решить его, но, похоже, это иначе. Если я объявляю cCont As «Контроль», я не могу получить свойство GroupName. Если я объявляю cCont как «OptionButton» (так как это все, что я хочу проверить), тогда он дает неправильное совпадение типа в моем методе Loop при попытке петли через Me.Controls. Я не пытаюсь заставить вас сказать мне, что делать, но мне нужно какое-то направление ?! – Mike

1

Я искал Google для «VBA UserForm получить управления», это первый результат:

http://www.ozgrid.com/VBA/control-loop.htm

Dim control As Control 
For Each control In Me.Controls 

    If TypeName(control) = "RadioButton" Then 

     ' do stuff 
    End If 

Next 
+0

избил вас: P –

+0

@ Дай спасибо за ответ, я должен был отметить Дага так же правильно, как и первым. – Mike