Я работаю над макросом для Excel и имею подпрограмму, которая передает массив в другую подпрограмму, но я продолжаю получать
Ошибка времени выполнения '9'
Индекс вне диапазона
ниже - мой код, и я оставил комментарий, указывающий, где происходит эта ошибка. Я новичок в VBA, так что возможно я пытаюсь передать массив неправильно, хотя не уверен.
'Main Driver
Sub Main()
WorkbookSize = size() 'Run function to get workbook size
newbook = False
Call create 'Run sub to create new workbook
Call pull(WorkbookSize) 'Run sub to pull data
End Sub
'Get size of Worksheet
Function size() As Integer
size = Cells(Rows.Count, "A").End(xlUp).Row
End Function
'Create workbook
Sub create()
Dim wb As Workbook
Set wb = Workbooks.Add
TempPath = Environ("temp")
With wb
.SaveAs Filename:=TempPath & "EDX.xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
.ChangeFileAccess Mode:=xlReadOnly, WritePassword:="admin"
End With
End Sub
'pull data
Sub pull(size)
Dim code() As Variant
For i = 1 To size
'Check code column fo IN and Doctype column for 810
If Cells(i, 18).Value = "IN" Then
code(i) = Cells(i, 18).Value 'store in array
End If
Next i
Call push(code)
End Sub
'push data to new workbook
Sub push(ByRef code() As Variant)
activeBook = "TempEDX.xlsm"
Workbooks(activeBook).Activate 'set new workbook as active book
For i = 1 To UBound(code) ' <---here is where the error is referencing
Cells(i, 1).Value = code(i)
Next i
End Sub
Любая помощь приветствуется.