PowerPoint: VBA Subscript вне диапазона при циклическом массиве - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь использовать цикл, чтобы разделить массив 1d на массив 2d и заполнить текстовые поля в VBA.Я получаю сообщение об ошибке, выход за пределы диапазона для таблицы (j, i - 4) в строке, которая говорит: Таблица (j, i - 4) = inputArray (10 * (i - 4 - 1) + (j - 1)) Пожалуйста, дайте мне знать, если есть лучший способ сделать это, любая помощь приветствуется

Часть кода ниже

For i = 5 to 9 

Dim inputArray As Variant
Dim Table As Variant

inputArray = Array(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9)

For j = 1 To UBound(inputArray)
    Table = Array(j, i - 4)
    Table(j, i - 4) = inputArray(10 * (i - 4 - 1) + (j - 1))
Next j

Set oPicture = oSl.Shapes.AddTextbox(msoTextOrientationHorizontal, _
        Left:=TBLeft1, Top:=TBTop1, _
        Width:=TBWidth1, Height:=TBHeight1)
    oPicture.TextFrame.TextRange.Text = Table(1, (i - 4))
    With oPicture
    .ZOrder msoBringInFrontOfText
    End With
Set oPicture = oSl.Shapes.AddTextbox(msoTextOrientationHorizontal, _
        Left:=TBLeft2, Top:=TBTop2, _
        Width:=TBWidth2, Height:=TBHeight2)
    oPicture.TextFrame.TextRange.Text = Table(2, (i - 4))
    With oPicture
    .ZOrder msoBringInFrontOfText
    End With

Next i

1 Ответ

0 голосов
/ 30 мая 2018

Table - это одномерный массив:

enter image description here

В этой строке Table(j, i - 4) вы используете его, как если бы он былмногомерный.

Попробуйте что-нибудь такое маленькое, как этот, чтобы получить значение:

Option Explicit

Public Sub TestMe()

    Dim i As Long, j As Long
    For i = 5 To 9

        Dim inputArray As Variant
        Dim Table As Variant

        inputArray = Array(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)

        For j = 0 To 1
            Table = Array(j, i - 4)
            Table(j) = inputArray(i - 4)
            Debug.Print Table(j)
        Next j
    Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...