2015-10-28 148 views
0

以下代码显示具有固定大小的数组,其中包含六个值。基于单元值的变量数组

我应该怎么做才能让其大小取决于单元格的值?例如,从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

你的意思'redim'和/或'REDIM preserve'? –

+0

我试过了!但没有解决。我使用了以下代码:[code] Dim Max as INteger Max = Sheets(“Home”)。Range(“H1”)。Value ReDim MySlideArray(2 To Max)[code],但没有解决。在另一条线,上述所有这些 –

+0

通过'REDIM myslidearray(2到最大)遇到错误91'你说你想用'最大的阵列 - 2'插槽的2'lbound'和最大的'ubound'不数值为2到最大的数组。因此,在你的代码是myslidearray调用'(2)'myslidearray(最大值)不为1的'lbound'和5 –

回答

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 
+0

我试过了!但没有解决。我使用了以下代码:[code] Dim Max as INteger Max = Sheets(“Home”)。Range(“H1”)。Value ReDim MySlideArray(2 To Max)[code],但没有解决。在另一行中出现错误91,高于所有这些 –

+1

您应该*编辑您的问题*并准确显示您所尝试的内容,并准确描述您在运行时发生的情况。 –