Написал формулу на VBA - суммирование значений в зависимости от цвета текста
Формула работает в момент когда, меняются значения или вставки в ячейку. Значения записаны в 4 столбцах
Попробовал Private Sub Worksheet_Change(ByVal Target As Range) для изменения формулы SumByColor он срабатывает только при изменении значения, а при изменении цвета текста нет
Написал вот такой код, только он работаете через раз
Какие есть способы, что бы вставить формулу в другую ячейку при изменении цвета?
Код |
---|
Public Function SumByColor(pRange1 As Range, CodeColor As Double) As Double Application.Volatile Dim rng As Range Dim xTotal As Double xTotal = 0 For Each rng In pRange1 If rng.Font.Color = CodeColor Then xTotal = xTotal + rng.Value End If Next SumByColor = xTotal End Function |
Формула работает в момент когда, меняются значения или вставки в ячейку. Значения записаны в 4 столбцах
Попробовал Private Sub Worksheet_Change(ByVal Target As Range) для изменения формулы SumByColor он срабатывает только при изменении значения, а при изменении цвета текста нет
Написал вот такой код, только он работаете через раз
Код |
---|
Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) Static OldSelection As Range Static OldColorIndex As Long Static numRow As Long Static rng As String If OldSelection = ActiveCell Then If OldColorIndex <> Selection.Font.Color Then Range("AR" & numRow).Formula = "=SumByColor(" & rng & ";255)" Range("AS" & numRow).Formula = "=SumByColor(" & rng & ";0)" OldSelection = ActiveCell numRow = OldSelection.Row rng = "$AI" & numRow & ":AL" & numRow OldColorIndex = Selection.Font.Color End If Else OldSelection = ActiveCell numRow = OldSelection.Row rng = "$AI" & numRow & ":AL" & numRow OldColorIndex = Selection.Font.Color End If End Sub |
Какие есть способы, что бы вставить формулу в другую ячейку при изменении цвета?