Здравствуйте, я новичок в VBA и надеюсь, что вы можете помочь мне с этой ошибкой, так как она кажется довольно распространенной. Основная идея сценария - пройти через диапазон данных и найти точку разделения, в которой изменяются значения в проверяемом столбце. Кто-то еще написал сценарий, и, признаюсь, у меня много проблем с его чтением. Пожалуйста, найдите сценарий до появления ошибки ниже (последняя строка - это то, где отладчик говорит, что это проблема):
Sub SplitWorkbook(splitbasis As String)
'sub below sorts the data in a table
SortPeople (splitbasis)
Dim c As Range
Dim rngHeaderRange As Range
Dim lngColNumber As Long
Dim strColIndex As String
If splitbasis = vbNullString Then
MsgBox "Please select a split basis first!", vbOKOnly
Exit Sub
End If
lngColNumber = PeopleData.ListObjects("People_data").ListColumns(splitbasis).Range.Column
strColIndex = Col_Letter(lngColNumber) & "1"
'path to template for new workbook
Dim strTemplate As String: strTemplate = ThisWorkbook.Path & "\NewNewFileTemplate.xlsm"
Dim i As Long
Dim j As Long
Dim l As Long
Dim lngTotalRow As Long
Dim lngTotalCol As Long
Dim temp As Boolean
Dim saveFilename As String
Dim rngMasterDataset As Variant
'initialize splitpoint with 0 - this value will get updated in the loop
Dim lngSplitPoint As Long
lngSplitPoint = 0
Dim arrDataset() As Variant
Dim arrTempDataset() As Variant
Dim wbkMaster As Workbook
Set wbkMaster = ThisWorkbook
Dim wksMasterData As Worksheet
Set wksMasterData = wbkMaster.Worksheets("People Detail")
lngTotalRow = wksMasterData.Cells(Rows.Count, 4).End(xlUp).Row
lngTotalCol = wksMasterData.Cells(11, Columns.Count).End(xlToLeft).Column
Set rngMasterDataset = wksMasterData.Range(Cells(12, 4), Cells(lngTotalRow, lngTotalCol))
'store whole dataset in array
arrDataset = rngMasterDataset.Value2
Dim lngArrDatasetRows As Long
Dim lngArrdatasetCols As Long
lngArrDatasetRows = UBound(arrDataset, 1)
'go through the whole dataset in the array
For i = 1 To lngArrDatasetRows
If i = lngArrDatasetRows Then GoTo LastIteration
'avoiding out of boundary (check because last iteration then does not go through)
If i <> lngArrDatasetRows Then
'get the number where the dataset needs to get split
If arrDataset(i, lngColNumber) <> arrDataset(i + 1, lngColNumber) Then
Я не понимаю, почему это приведет к ошибке выхода за пределы диапазона, так как i (1) , i + 1 (2) и lngColNumber (8 - правильный столбец для «рецензирования»), кажется, находятся в диапазоне?