2015-01-06 2 views
-1

Я использую пользовательскую форму с несколькими флажками в ней. Моя цель состоит в том, чтобы все флажки возвращали свои значения (уникальные двухкратные аббревиатуры) в одну ячейку. Я не уверен, как это сделать. У меня нет опыта VBA до сегодняшнего дня.VBA multiple checkbox userform для одной ячейки

ответ

0

Вы можете записать макрос, чтобы получить ваш другой соответствующий код VBA, но это должно помочь:

Range("A" & LastRow).Value = CheckBox1.Value & CheckBox2.Value & CheckBox3.Value 'etc. 
    'Concatenate CheckBox values with "&" (the values will be True or False though) 
0

Набора linkcell каждого флажка на другую ячейку -.e.g. checkbox1 в ячейку A1, checkbox2 в ячейку A2 и т. д. Для каждой ячейки соты используйте формулу If в своей смежной ячейке, чтобы проверить содержимое ячейки ссылки и вернуть строку или пробел, , например. если (A1 = True, «AA», «») в ячейке B1, если (A2 = True, «BB», «») в ячейке B2 и т. д. Наконец, объедините результаты «if» формул в другой ячейке: например, B1 & «» & B2 & «» & B3, используя запятую в качестве separaters

0

Чтобы сделать это, вы можете сделать коллекцию всех флажков в форме. Heres мой код:

Private mcolCHK As Collection 'This creates a modular level collection, which will keep track of all of the checkboxes 
Private Sub cmdOK_Click() 

    Dim objA As Object, strResults As String, i As Integer 
    i = 1 
    For Each objA In mcolCHK 
     strResults = strResults & i & Left(objA.Value, 1) 
     i = 1 + i 
    Next 
    Unload frmTestForm 'rename this the name of your form 

    MsgBox strResults 
    'instead of using a message box, you can say "strResults = Sheets(sheet1).range("A1").value 
    'This part may be customized as needed 
End Sub 

Private Sub UserForm_Initialize() 
    Set mcolCHK = New Collection 
    mcolCHK.Add chkAtt1 'you will have to add one of these for each checkbox (simply replace "chkAtt1" with the name of your first checkbox 
    mcolCHK.Add chkAtt2 'and repeat for each checkbox 
End Sub 

Флажки всегда дают значение True или False. с помощью этого метода вы получите номер флажка (в порядке добавления их в коллекцию в подмножестве UserForm_Initialize()) и первой буквы результата (T или F). Когда я запустил это, у меня было два флажка и каждый раз проверял, когда эта форма запускается. Это дало мне результат «1T2T». Это может быть изменено по мере необходимости. Все, что вам действительно нужно, это то, как все это работает. просто убедитесь, что вы изменили все имена в соответствии с именами используемых вами переменных.