Выбор тринадцати флажков для нескольких случаев - PullRequest
0 голосов
/ 10 февраля 2020

Моя пользовательская форма имеет около 13 флажков для выбора отдела, каждый флажок выбора затем вводит значение заголовка в одну ячейку. Ниже код я проверяю только на 3 флажка, Как заставить его работать на 13 флажок?

If DeptCheckBox1.Value = True Then Cells(emptyRow, 8).Value = DeptCheckBox1.Caption

If DeptCheckBox2.Value = True Then Cells(emptyRow, 8).Value = Cells(emptyRow, 8).Value & " " & DeptCheckBox2.Caption

If DeptCheckBox3.Value = True Then Cells(emptyRow, 8).Value = Cells(emptyRow, 8).Value & " " & DeptCheckBox3.Caption

enter image description here

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

L oop через все checkboxes и захватить выбранные поля до String. Затем поместите эту строку в ваш cell.

Private Sub CommandButton1_Click()
Dim ctl As Control
Dim AllCtl As String

    For Each ctl In Me.Controls
        If TypeName(ctl) = "CheckBox" And ctl = True Then
            AllCtl = ctl.Caption & ", " & AllCtl
        End If
    Next ctl

Range("A1") = AllCtl
End Sub

enter image description here

0 голосов
/ 10 февраля 2020

Самый элегантный способ был бы следующим, я думаю:

  1. Создать подпроцедуру (в модуле кода формы), которая будет вызываться всеми флажками (кроме первого one):

    Private emptyrow as Long

    Private Sub changeVal(strCap As String) Cells(emptyrow, 8).Value = Cells(emptyrow, 8).Value & " " & strCap End Sub

  2. Используйте событие Change для всех обсуждаемых флажков следующим образом:

    Private Sub DeptCheckBoxX_Click() If Me.DeptCheckBoxX.Value = True Then changeVal DeptCheckBoxX.Caption End Sub

Где "X" - номер текстового поля.

Поле будет обновлено без нажатия какого-либо другого элемента управления. Только emptyrow является переменной, объявленной на уровне модуля и хорошо поддерживаемой ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...