В ячейках, заполненных VB Font Color, не распознаваемых другой функцией - PullRequest
0 голосов
/ 21 октября 2019

Я создал некоторый код vb, который распределяет стоимость предмета между 4 столбцами. Содержимое 4 столбцов всегда будет равно 0. Какой бы столбец не был активен, стоимость элемента умножается на -75%, а отрицательное число уже отформатировано, чтобы быть красным. Остальные 3 столбца содержат стоимость предмета, умноженную на 0,25% и отформатированную как черный. Это работало для каталогизации объектов недвижимости для распространения среди бенефициаров. Я хочу иметь возможность подсчитывать столбцы по красному тексту (который, в свою очередь, даст мне знать, сколько предметов получает каждый человек). Теперь я добавил некоторые функции, которые я не писал, а копировал с сайта. Я проверил CountCellByFontColor и на любых других столбцах я могу вручную выбрать цвет шрифта, и он действительно обнаруживается и работает отлично. Если я использую эту функцию в моих 4 столбцах, в которых VB заполняет содержимое, функция, похоже, не распознает красный текст как красный текст. Если я нажму на ячейку и поменяю ее вручную на любой цвет, кроме красного, он распознает и посчитает его. В противном случае он просто считает каждую ячейку в столбце, черную или красную. Есть ли способ исправить это легко? Я не хочу менять ячейку в каждой строке на другой цвет.

Вот фрагмент кода для моего кода и скопированной функции. Я хочу еще раз повторить, что функция подсчета цветных ячеек прекрасно работает везде, кроме моих вычисляющих столбцов vb. Спасибо

Case "4"
       'Me.Unprotect
        'MsgBox Target.Address

        RowNumber = Target.Cells.Row
       ' MsgBox "RowNumber " & RowNumber
       'Debug.Print "test " & Me.Cells(RowNumber, 2).Value


        Me.Cells(RowNumber, 5).Value = Me.Cells(RowNumber, 3).Value * 0.25
        Me.Cells(RowNumber, 5).Font.Color = vbBlack
        Me.Cells(RowNumber, 6).Value = Me.Cells(RowNumber, 3).Value * 0.25
        Me.Cells(RowNumber, 6).Font.Color = vbBlack
        Me.Cells(RowNumber, 7).Value = Me.Cells(RowNumber, 3).Value * 0.25
        Me.Cells(RowNumber, 7).Font.Color = vbBlack

        Debug.Print "test of assign " & Me.Cells(RowNumber, 3).Value
        Me.Cells(RowNumber, 4).Value = -(Me.Cells(RowNumber, 3).Value * 0.75)
        Me.Cells(RowNumber, 4).Font.Color = vbRed

И это часть Кодекса, которая не распознает красный

Function CountCellsByColor(rData As Range, cellRefColor As Range) As Long
Dim indRefColor As Long
Dim cellCurrent As Range
Dim cntRes As Long

Application.Volatile
cntRes = 0
indRefColor = cellRefColor.Cells(1, 1).Interior.Color
For Each cellCurrent In rData
    If indRefColor = cellCurrent.Interior.Color Then
        cntRes = cntRes + 1
    End If
Next cellCurrent

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