Невозможно добавить значения ячеек на основе выбора флажка в пользовательской форме - PullRequest
0 голосов
/ 04 марта 2019

Я пишу пользовательскую форму

Чего я пытаюсь достичь: при запуске моей пользовательской формы с несколькими флажками выбора.

  1. Соберите все подписи отмеченных флажков вместе с родительским фреймомname
  2. Фильтрация базы данных по ее первому столбцу по собранным строкам
  3. Цикл отфильтрованных ячеек и получение требуемых сумм
  4. Выбор может содержать каждую строку с разными столбцами (на основевыбор флажка)

См. пример ниже для лучшего понимания

Снимок листа Excel, содержащий данные

Форма пользователя

Код для Кнопка оценки

Private Sub preflight_calculate_Click()
Dim preflight_resource As Double, preflight_time As Double

preflight_resource = Val(Me.preflight_resource)
preflight_time = Val(Me.preflight_time)
Dim cell As Range
With ThisWorkbook.Sheets("Preflight")
    With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
        .AutoFilter 1, Criteria1:=GetCheckedCaptions, Operator:=xlFilterValues
        For Each cell In .SpecialCells(xlCellTypeVisible)
            preflight_resource = Val(preflight_resource) + cell.Offset(, 6).Value
            preflight_time = Val(preflight_time) + cell.Offset(, 8).Value
        Next
    End With
    .AutoFilterMode = False
End With

With Me
    .preflight_resource.Text = preflight_resource
    .preflight_time.Text = preflight_time
End With
End Sub

Function GetCheckedCaptions() As Variant
Dim ctl As Control
With Me
    For Each ctl In .Controls
        If TypeName(ctl) = "CheckBox" Then
            If ctl.Value Then
                GetCheckedCaptions = GetCheckedCaptions & " " & ctl.Parent.Caption & "-" & ctl.Caption
            End If
        End If
    Next
End With
GetCheckedCaptions = Split(Trim(GetCheckedCaptions))
End Function

Ожидаемый результат: Например:

Если установить флажок следующим образом, США-> Мобильный -> P0 и США -> Рабочий стол -> P1

Выходные данные должны быть:

Текстовые поля ниже:

Используемый ресурс: (F2+ G3) -> (0,73 + 0,62) -> 1,35 (внутри текстового поля)

Время в часах: (H2 + I3) -> (5,87 + 4,95) -> 10,82 (внутри текстового поля)

Как этого добиться?

Ссылка на файл My Excel: («Предварительная проверка» - это имя листа, на котором имеются данные) Форма пользователя будет отображаться на листе «Форма оценки»

https://drive.google.com/file/d/1K2LdVuJXNZoavrkcQgslY20c4R9nlRfo/view?usp=sharing

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