VBA добавление к значению ReDim - PullRequest
1 голос
/ 22 февраля 2020

Хорошо, у меня проблемы с использованием массивов ReDim; который мне сказали, был способ сделать это. Я просто не уверен, где его поставить или пришлось добавить к первому целому числу ((n, n)) для каждого прохода через функцию. К вашему сведению, «Dim PropArray (0, 5) As String» находится в самой верхней части кода, где находится «База сравнения опций».

Dim PropArray(0, 5) As String

Public Function ShowBeam()

For Each ctl In [Forms]![frmShelfBuilder]
    If Left(ctl.Name, 3) = "Box" Then
        If Int(Right(ctl.Name, (Len(ctl.Name)) - 3)) = Me.txtBeamCount Then
            If Box1.Visible = False Then
            Set rct = ctl
                PropArray(0) = rct.Name
                PropArray(1) = rct.Visible
                PropArray(2) = rct.Height 'Int out
                PropArray(3) = rct.Left 'Int out
                PropArray(4) = rct.Top 'Int out
                PropArray(5) = rct.Width 'Int out
            Else
            Set rct = ctl
            'ReDim Preserve PropArray(n + 1, 5) where "n" is the current number in the row (I think this is were you would add the "ReDim Preserve"?)
                PropArray(0) = rct.Name
                PropArray(1) = rct.Visible
                PropArray(2) = rct.Height 'Int out
                PropArray(3) = rct.Left 'Int out
                PropArray(4) = rct.Top 'Int out
                PropArray(5) = rct.Width 'Int out
            End If
        End If
    End If
Next

Мне кажется, я на правильном пути. Я просто застрял в не знаю, где ReDim сохранить массив, чтобы добавить 1 к первому целому числу. Любые предложения приветствуются. Muchacho apreciado!

1 Ответ

3 голосов
/ 22 февраля 2020

Если вы хотите иметь возможность ReDim, то вы не можете указать размер в Dim

Измените его на:

Dim PropArray() As String
ReDim PropArray(0, 5)

Это будет делать то же самое вещь, и позволит вам ReDim Preserve позже.

Примечание: ReDim должен быть внутри подпрограммы, а не снаружи, как показывает ваш код.

Так что-то как:

Dim PropArray() As String

Sub Prop_Init()
  ReDim PropArray(0, 5)
End Sub

Sub Prop_AddDim()
  ReDim Preserve PropArray(0, 6)
End Sub

Также имейте в виду, что вы сможете ReDim только последнюю часть массива.

...