Как я могу получить общее количество фигур в листе Excel одного цвета? Например, у меня есть 3 формы красного цвета, 2 формы зеленого цвета и 1 форма желтого цвета, и я хочу получить результат в виде ячейки (1,1): 3 (красного цвета) ячейки (2,1): 2 (зеленого цвета) цвет) ячейка (3,1): 1 (желтый цвет)

* P/s: я назначил макрос для вставки фигур с указанием цвета (vbRed, vbYellow).

Пробовал с кодировкой ниже, нет сообщения об ошибке, но nth показывает.

 Sub CalcShape()
     Dim sh As Sheet1
     Dim a As Single
     Dim b As Single
     Dim shp As Shape
     Dim vbYellow As Long
     Dim vbGrey As Long
     Dim vbRed As Long
     Dim vbGreen As Long

    For Each sh In ThisWorkbook.Sheets
        For Each shp In sh.Shapes
            If shp.Type = ShapeType Then
                If Shapes.Fill.ForeColor = vbRed Then
                   Sheet1.Cells(2, 1) = Shapes.Count

                End If
            End If
        Next

        For Each shp In sh.Shapes
            If shp.Type = ShapeType Then
                If Shapes.Fill.ForeColor = vbGreen Then
                    b = a + 1
                    Sheet1.Cells(3, 1) = b

                End If
            End If
        Next    
    Next
End Sub

1 ответ1

0

Ты не считаешь свою shp:

For Each shp In sh.Shapes
            If shp.Type = ShapeType Then
                If Shapes.Fill.ForeColor = vbGreen Then
                    b = a + 1
                    Sheet1.Cells(3, 1) = b
                End If
            End If
 Next 

Вот:

If Shapes.Fill.ForeColor 

должно быть

If shp.Fill.ForeColor

С другой стороны, вы можете вместо этого рассмотреть возможность использования Select Case для этого. Также включите Option Explicit чтобы увидеть, какие другие ошибки всплывают.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .