基于单元格值的可变数组

时间:2015-10-28 17:31:43

标签: arrays excel vba variables

以下代码显示了一个固定大小的数组,其中包含六个值。

如何使其大小取决于单元格值?例如,从1到10?

Dim MySlideArray As Variant
        Dim MyRangeArray As Variant
'List of PPT Slides to Paste to
   MySlideArray = Array(2, 3, 4, 5, 6, 7)
 'List of Excel Ranges to Copy from. For now, assume that it's always 6 ranges
  With tb.DataBodyRange
     MyRangeArray = Array(Worksheets(.Cells(1, 1).Value).Range(.Cells(1, 2).Value), _
                Worksheets(.Cells(2, 1).Value).Range(.Cells(2, 2).Value), _
                Worksheets(.Cells(3, 1).Value).Range(.Cells(3, 2).Value), _
                Worksheets(.Cells(4, 1).Value).Range(.Cells(4, 2).Value), _
                Worksheets(.Cells(5, 1).Value).Range(.Cells(5, 2).Value), _
                Worksheets(.Cells(6, 1).Value).Range(.Cells(6, 2).Value))



'Loop through Array data
For x = LBound(MySlideArray) To UBound(MySlideArray)
'Copy Excel Range
MyRangeArray(x).Copy

'Paste to PowerPoint and position
  On Error Resume Next
    Set shp = myPresentation.Slides(MySlideArray(x)).Shapes.PasteSpecial(DataType:=2) 'Excel 2007-2010
    Set shp = PowerPointApp.ActiveWindow.Selection.ShapeRange 'Excel 2013
  On Error GoTo 0]

1 个答案:

答案 0 :(得分:1)

您可以使用ReDim

Sub Tester()

    Dim myArr() As Range
    Dim myCell

    Set myCell = Sheet1.Range("A1")

    ReDim myArr(0 To myCell.Value)

    Debug.Print LBound(myArr), UBound(myArr)

End Sub