Комментарии в вашем коде показывают, что вам нужно, чтобы какой-нибудь код MsgBox отображал выбранные значения. (Вы не включили имена ваших элементов управления флажками, поэтому я использовал Checkbox1 и Checkbox2 соответственно. Измените их так, чтобы они соответствовали именам элементов управления флажками.)
If ListBoxCustlist.ListIndex = -1 Then
MsgBox "No Item was selected"
Else
MsgBox ListBoxCustlist.List(ListBoxCustlist.ListIndex, 0) & " - Days=" & CheckBox1.Value & " - Amount=" & CheckBox2.Value
' Me.Hide ' Optionally hide the form
End If
Обновление : Я бы хотел взять среднее число каждого человека в списке с таким именем
Ну, это намного сложнее, но это должно работать:
Private Sub BtnOk_Click()
If ListBoxCustlist.ListIndex = -1 Then
MsgBox "No Item was selected"
Else
Dim lRow As Long
Dim lLastRow As Long
Dim dDayCount As Object
Dim dDayValue As Object
Dim dAmountCount As Object
Dim dAmountValue As Object
Set dDayCount = CreateObject("Scripting.Dictionary")
Set dDayValue = CreateObject("Scripting.Dictionary")
Set dAmountCount = CreateObject("Scripting.Dictionary")
Set dAmountValue = CreateObject("Scripting.Dictionary")
Dim sPerson As String
lLastRow = 17
sPerson = ListBoxCustlist.List(ListBoxCustlist.ListIndex, 0)
With Worksheets("Data")
For lRow = 3 To lLastRow
If .Range("A" & lRow).Value = sPerson Then
If Not dDayCount.Exists(sPerson) Then
dDayCount.Add sPerson, 1
dAmountCount.Add sPerson, 1
dDayValue.Add sPerson, .Range("B" & lRow).Value
dAmountValue.Add sPerson, .Range("C" & lRow).Value
Else
dDayCount.Item(sPerson) = dDayCount.Item(sPerson) + 1
dDayValue.Item(sPerson) = dDayValue.Item(sPerson) + .Range("B" & lRow).Value
dAmountCount.Item(sPerson) = dAmountCount.Item(sPerson) + 1
dAmountValue.Item(sPerson) = dAmountValue.Item(sPerson) + .Range("C" & lRow).Value
End If
End If
Next
End With
Dim sResult As String
sResult = sPerson & ": "
If CheckBox1 Then
If dDayCount.Item(sPerson) = 0 Then
sResult = sResult & "Days AVG=0"
Else
sResult = sResult & "Days AVG=" & dDayValue.Item(sPerson) / dDayCount.Item(sPerson)
End If
If CheckBox2 Then sResult = sResult & " : "
End If
If CheckBox2 Then
If dAmountCount.Item(sPerson) = 0 Then
sResult = sResult & "Amount AVG=0"
Else
sResult = sResult & "Amount AVG=" & dAmountValue.Item(sPerson) / dAmountCount.Item(sPerson)
End If
End If
MsgBox sResult
End If
End Sub