я определил следующий массив:Integer делает обратный массив неверное значение
Global Locations_Array() As String
ThisWorkbook.Worksheets("Locations").Activate
TotalRowsLocations = ActiveSheet.UsedRange.Rows.Count
ReDim Locations_Array(1 To TotalRowsLocations, 1 To 6) As String
В соответствии с этим я ожидаю, что первая строка массива в строке 1. Я использовал этот массив, чтобы назвать новые рабочие листы в моей книге , и это началось с 1, и закончилось там, где это необходимо.
Однако теперь я вновь призываю этот массив со следующим кодом:
Sub Get_Lat_Lng()
Dim row As Integer
Dim data_row As Integer
Call Fill_Array_Locations
totalrowsdata = ThisWorkbook.Worksheets("Locations").UsedRange.Rows.Count - 1
TotalRowsDataLookup = ThisWorkbook.Worksheets(Locations_Array(row, 1)).UsedRange.Rows.Count
For row = 2 To totalrowsdata
ThisWorkbook.Worksheets(Locations_Array(row, 1)).Activate
If (UCase(Locations_Array(row, 5))) = (UCase(ThisWorkbook.ActiveSheet(row, 7))) And (UCase(Locations_Array(row, 6))) = (UCase(Worksheet.ActiveSheet(row, 8))) Then
For data_row = 1 To TotalRowsDataLookup
If (UCase(Locations_Array(row, 2)) = UCase(ThisWorkbook.Worksheets(Locations_Array(data_row, 1)).Cells(data_row, 5))) Then
Cells(data_row, 7) = Locations_Array(row, 5)
Cells(data_row, 8) = Locations_Array(row, 6)
Exit For
End If
Next data_row
Exit For
End If
Next row
End Sub
И это возвращает «ошибка времени выполнения„9“: Подстрочный из диапазона» Когда я проверяю для значений в эта строка строки кода имеет значение 0 из-за того, что она является целым числом. Есть ли способ заставить это целое число начинаться с 1 вместо 0? Я нашел возможность установить:
Option Base 1
Но это мешает остальной части моего кода.
Где вы определяете значение 'row'? – stucharo
Я расширил фрагмент кода в OP, чтобы показать, что – Luuklag
. Нет элемента с индексом '0', но вы используете индекс' row', когда его значение равно 0. 'Locations_Array (row, 1)'. Вы должны назначить 'row' 1 или что угодно, если вы используете его в качестве индекса. –