Форум по VBA, Excel и Word

VBA, Excel => VBA, макросы в Excel => Тема начата: Amator от 06 апреля 2014, 20:06

Название: Excel VBA Макросы: Суммирование значений по заливке (цвету) заданной ячейки.
Отправлено: Amator от 06 апреля 2014, 20:06
Как написать код: суммировать только те ячейки, заливка которых равна заливке ячейки А2?

[вложение удалено администратором]
Название: Re: Excel VBA Макросы: Суммирование значений по заливке (цвету) заданной ячейки.
Отправлено: Администратор от 06 апреля 2014, 22:11
Код
Private Sub CommandButton1_Click()
    Dim Rng As Range, Arr(), i As Long, iSum As Single
    Dim lngColor As Long
   
   
    If Me.ComboBox1.Text = "" Or Me.ComboBox2.Text = "" Then
        MsgBox "Укажите сроки!", vbExclamation, "Внимание"
        Exit Sub
    End If
   
    If Me.ComboBox1.Value > Me.ComboBox2.Value Then
        MsgBox "Первая дата должна быть меньше второй!", vbExclamation, "Внимание"
        Exit Sub
    End If
   
    'Взятие цвета ячейки в переменную.
    lngColor = Range("A2").Interior.Color
   
    With Worksheets("Лист1")
        Set Rng = .Range("B2:C" & .Cells(.Rows.Count, "B").End(xlUp).Row)
    End With
    Arr = Rng.Value
    iSum = 0
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        If Arr(i, 1) >= CDate(Me.ComboBox1.Value) And _
                Arr(i, 1) <= CDate(Me.ComboBox2.Value) Then
            If Rng.Cells(i, 2).Interior.Color = lngColor Then
                iSum = iSum + CSng(Arr(i, 2))
            End If
        End If
    Next i
    MsgBox "Сезонность равна: " & iSum, vbInformation, "Сезонность"
End Sub
[свернуть]
Название: Re: Excel VBA Макросы: Суммирование значений по заливке (цвету) заданной ячейки.
Отправлено: Amator от 06 апреля 2014, 22:45
Все хорошо работает. Большое спасибо!