Я пишу пользовательскую форму
Чего я пытаюсь достичь: при запуске моей пользовательской формы с несколькими флажками выбора.
- Соберите все подписи отмеченных флажков вместе с родительским фреймомname
- Фильтрация базы данных по ее первому столбцу по собранным строкам
- Цикл отфильтрованных ячеек и получение требуемых сумм
- Выбор может содержать каждую строку с разными столбцами (на основевыбор флажка)
См. пример ниже для лучшего понимания
Снимок листа 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