Проблема с сложением от Interior.ColorIndex и Cell Styles - PullRequest
1 голос
/ 21 мая 2019

У меня проблемы с подсчетом ячеек с помощью Interior.ColorIndex и Cell Style.Я использую Смещение для проверки другого столбца и цикл For для проверки каждой ячейки.Я считаю, что это проблема с моими заявлениями If.Разве это не должно работать, потому что цикл проверяет каждую ячейку, проходящую через все операторы If?

Sub Totals()
Dim rng As Range, cell As Range
Dim Supertotal As Long
Dim Subtotal As Long
Dim Ptotal As Long
Set rng = Range("F2:F32")
Supertotal = 0
Subtotal = 0
Ptotal = 0
For Each cell In rng
    If ActiveCell.Offset(0, -4).Interior.ColorIndex = 6 Then
        Supertotal = Supertotal + 1
    ElseIf ActiveCell.Offset(0, -4).Style = "Note" Then
        Subtotal = Subtotal + 1
    Else
        Ptotal = Ptotal + 1
    End If
Next cell
Ptotal = Ptotal - Supertotal - Subtotal
MsgBox "The Total Number of SuperTests is " & Supertotal
MsgBox "The Total Number of SubTests is " & Subtotal
MsgBox "The Total Number of Procedure Tests is " & Ptotal

End Sub

Что касается результатов, я подсчитал все 31 ячейку, они просто не сортируются.Все 31 ячейки попадают в одну переменную в зависимости от того, что я изменяю.

Используемые данные Excel

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Цикл проходит через ячейки в rng, но все If s основаны на ActiveCell, который является выбранной ячейкой на вашем листе и не имеет ничего общего с cell. Вместо этого используйте cell.Offset....

0 голосов
/ 21 мая 2019

Только что нашел ответ на свою проблему, но спасибо за ответ. Я изменил смещения ActiveCell на «Поиск диапазона» («C» & cell.Row).

Sub Totals()
Dim rng As Range, cell As Range
Dim Supertotal As Long
Dim Subtotal As Long
Dim Ptotal As Long
Set rng = Range("F2:F32")
Supertotal = 0
Subtotal = 0
Ptotal = 0
For Each cell In rng
    If Range("C" & cell.Row).Interior.ColorIndex = 6 Then
        Supertotal = Supertotal + 1
    ElseIf Range("C" & cell.Row).Style = "Note" Then
        Subtotal = Subtotal + 1
    Else
        Ptotal = Ptotal + 1
    End If
Next cell
MsgBox "The Total Number of SuperTests is " & Supertotal
MsgBox "The Total Number of SubTests is " & Subtotal
MsgBox "The Total Number of Procedure Tests is " & Ptotal

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