Борьба с этой ошибкой - я не слишком хорошо знаком с объектно-ориентированным программированием, поэтому я могу просто испортить синтаксис или что-то в этом роде. Я упростил свой код вниз, чтобы показать только то, что, кажется, вызывает проблемы и связанные с ними переменные:Требуемый объект - VBA Excel
Type layer
Step As Variant
End Type
Sub PullData()
j = 6
Do While a <= j
steps(1, a) = Sheets("Sheet2").Range("B" & a)
a = a + 1
Loop
a = 1
For a = 1 To j
If steps(1, a) = 0
layer.Step = steps(1, a)
'From here there is a bunch of code where I use that value to copy a
'bunch of other values in the worksheet and paste into a different one,
'then move onto the next "item" in the array
Next a
End Sub
В основном то, что я пытаюсь сделать, это принять ряд данных из рабочего листа, преобразовать этот диапазон в одномерный массив, а затем установите layer.Step
, равное каждому из этих значений через каждую итерацию. Ошибка во втором цикле происходит во layer.Step = steps(1, a)
.
Вы не объявленную 'layer' в вашей подпрограмме. Если вы поместите 'Dim layer as layer' в начале подпрограммы' PullData', вы все равно получите ошибку? Я бы рекомендовал называть переменную чем-то другим, поэтому у вас есть «Dim myLayer как layer», а затем 'myLayer.Step = шаги (1, a)', чтобы помочь с путаницей. – OpiesDad