Я пытаюсь передать несколько массивов из подпрограммы Main
в другую подпрограмму для загрузки. Я передаю ByRef
, чтобы передать их как указатели, чтобы я мог продолжать использовать их в подпрограмме Main
после их загрузки. Я также передаю словарь через загрузочный саб.
Когда я начинаю l oop через массивы в подпункте Build_Objects
, я сталкиваюсь с ошибкой Subscript Out of Range
и не могу понять, почему.
Мой упрощенный код:
Sub Main()
'//Declarations
Dim arr_data() As Variant
Dim dict_headers As Object
Dim arr_head1() As Variant, arr_head2() As Variant
Dim arr_platform() As Variant
'//Setting
Set dict_headers = CreateObject("Scripting.Dictionary")
'before main, build objects required
Call Build_Objects(arr_head1, arr_head2, dict_headers, arr_platform)
.
.
.
End Sub
Sub Build_Objects()
sub:
Sub Build_Objects(ByRef arr_head1P As Variant, ByRef arr_head2P As Variant, ByVal dict_headP As Object, ByRef arr_plat As Variant)
'//Declarations
Dim i_arr As Long
ReDim arr_plat(1 To 9, 1 To 4)
'//Arrays
arr_head1P = Array("First Name", "Last Name", "Email", "Phone", "Phone", "Phone", "Phone", "Zip", "Country", "DOB", "Gender")
arr_head2P = Array("fn", "ln", "email", "Google_ph1", "FB_ph1", "Google_ph2", "FB_ph2", "POSTCODE", "COUNTRY_CODE", "CUSTOMER_DOB", "CUSTOMER_GENDER")
'//Dictionary
For i_arr = LBound(arr_head1P) To UBound(arr_head1P)
dict_headP.Add arr_head2P(i_arr), arr_head1P(i_arr)
Next i_arr
End Sub
Ошибка Subscript
возникает, когда i_arr = 1
в массиве arr_head2P
, Но, как вы можете видеть ниже, до того, как он войдет в For
l oop, arr_headP2
будет загружен правильно, и arr_head2P(1)
должен вернуть ln
, не ошибка?
Кто-нибудь знает об этом или почему это происходит? Что я упустил? Такое ощущение, что я схожу с ума!