使用幻灯片范围填充数组

时间:2018-03-05 14:24:33

标签: arrays vba

我想遍历所有幻灯片,如果条件适用,请将幻灯片索引存储到一个数组中。这是我的代码,但是我收到了一个错误:

  

幻灯片(未知成员):非法值。坏类型:预期1D数组   变体,整数,长篇或字符串。

谢谢!

Private Sub folienauswahlen()
Dim arr() As Long
Dim b As Long
Dim folie As slide
    With ActivePresentation
        For Each folie In .Slides
            If .Slides.Range(folie).SlideIndex < 3 Then
            arr(b) = .Slides.Range(folie).SlideIndex
            ReDim Preserve arr(0 To b) As Long
            End If
        Next
    End With
End Sub

2 个答案:

答案 0 :(得分:0)

在这里,试试这个:

Private Sub folienauswahlen()
    ReDim arr(1 To 1) As Long
    Dim b As Long
    Dim folie As Slide
    With ActivePresentation
        b = 1
        For Each folie In .Slides
            If folie.SlideIndex < 3 Then
                ReDim Preserve arr(1 To b) As Long
                arr(b) = folie.SlideIndex
                b = b + 1

            End If
        Next
    End With
End Sub

在VBA中,您不需要.Slides.Range(folie).SlideIndex个构造。你得到每个变量的对象。

答案 1 :(得分:0)

您正在构建一个数组,使所有幻灯片索引都高于您输入的数字(在您的示例中为3)这将构建一个高于输入数字的所有索引的数组。但似乎你可以删除输入数字上方的幻灯片而没有数组或循环滑动幻灯片。您可以删除幻灯片索引大于输入数字的所有幻灯片。

这将为您提供阵列。

Private Sub folienauswahlen()
Dim arr() As Long
Dim b As Long
  Lslide = ActivePresentation.Slides.Count
  b = InputBox("enter the slide number")

      ReDim arr(0 To Lslide - b - 1) As Long
      For x = 0 To Lslide - b - 1
          arr(x) = b
          b = b + 1
     Next x


End Sub
相关问题