Сохранение значений в массиве и отображение в vba powerpoint

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

Мой текущий код выглядит следующим образом. Кто-нибудь может сказать, как я могу сохранить его в виде массива и отобразить его?

Private Sub CommandButton1_Click()

    Dim sld As Slide
    Dim shp As Shape
    Dim x As Byte

    With ActivePresentation
        z = .Slides(.Slides.Count).SlideNumber
        MsgBox z, vbDefaultButton1, "Total Slides"
    End With

    Dim myarray() As Integer
    ReDim myarray(0 To 2)

    For i = 2 To z
        Set sld = ActivePresentation.Slides(i)

        For Each shp In sld.Shapes
            If shp.TextFrame.TextRange.Font.Color.RGB = RGB(255, 0, 0) Then
                MsgBox i, vbDefaultButton2, "Slide with RED font"
            End If
        Next shp
    Next

End Sub
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
0
824
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо массива я бы использовал такой коллекция

Private Sub CommandButton1_Click()

Dim sld As Slide
Dim shp As Shape
Dim x As Byte
Dim z, i

    With ActivePresentation
        z = .Slides(.Slides.Count).SlideNumber
        MsgBox z, vbDefaultButton1, "Total Slides"
    End With

    Dim myCol As Collection
    Set myCol = New Collection


    For i = 2 To z
        Set sld = ActivePresentation.Slides(i)
        For Each shp In sld.Shapes
            If shp.TextFrame.TextRange.Font.Color.RGB = RGB(255, 0, 0) Then
                ' MsgBox i, vbDefaultButton2, "Slide with RED font"
                myCol.Add CStr(i), CStr(i)
            End If
        Next shp
    Next

    Dim j As Long
    For j = 1 To myCol.Count
        Debug.Print myCol.Item(j)
    Next j


End Sub

Это идеально. Немного по-другому, но делает то же самое. Бинго

Muhammad Mustafa 10.09.2018 21:52

Другие вопросы по теме