Я написал этот макрос для извлечения данных из отдельной рабочей книги для выполнения некоторых операций со строками. (Не показано) В конечном итоге код использует данные, хранящиеся в массивах, созданных для создания рабочих инструкций. Код, показанный ниже, с одним разделом, работающим как задумано (создание массива сгиба), второй раздел не будет (создание массива csk). Когда я шагаю по коду, он не будет go к «следующему i» и полностью завершит оператор if на первой итерации.
nbends = Application.WorksheetFunction.CountIf(Range("M6:M" & lastrow), "BEND RADIUS")
ncsksf = Application.WorksheetFunction.CountIf(Range("M6:M" & lastrow), "CSK FARSIDE")
ncsksn = Application.WorksheetFunction.CountIf(Range("M6:M" & lastrow), "CSK NEARSIDE")
ReDim Bends(1 To nbends, 1 To 5)
ReDim Csksn(1 To nscksn, 1 To 3)
'' Bend array creation
On Error Resume Next
Set r = Range("M6:M" & lastrow).Find(what:="BEND RADIUS", LookIn:=xlValues)
If Not r Is Nothing Then
firstaddress = r.Address
addressrow = Right(firstaddress, 2)
Bends(1, 1) = Range("A" & addressrow)
Bends(1, 2) = Range("C" & addressrow)
Bends(1, 3) = Range("A" & addressrow + 1)
Bends(1, 4) = Range("M" & addressrow + 1)
Bends(1, 5) = Range("B" & addressrow + 1)
Do
For i = LBound(Bends) + 1 To UBound(Bends)
Set r = Range("M" & addressrow & ":M" & lastrow).Find(what:="BEND RADIUS", LookIn:=xlValues)
firstaddress = r.Address
addressrow = Right(firstaddress, 2)
Bends(i, 1) = Range("A" & addressrow)
Bends(i, 2) = Range("C" & addressrow)
Bends(i, 3) = Range("A" & addressrow + 1)
Bends(i, 4) = Range("M" & addressrow + 1)
Bends(i, 5) = Range("B" & addressrow + 1)
Next i
Loop While Not r Is Nothing And r.Address <> firstaddress
End If
'' Csks array creation
On Error Resume Next
Set r = Range("M6:M" & lastrow).Find(what:="CSK NEARSIDE", LookIn:=xlValues)
If Not r Is Nothing Then
firstaddress = r.Address
addressrow = Right(firstaddress, 2)
Csksn(1, 1) = Range("A" & addressrow)
Csksn(1, 2) = Range("B" & addressrow)
Csksn(1, 3) = Range("M" & addressrow)
Debug.Print addressrow
Do
For i = LBound(Csksn) + 1 To UBound(Csksn)
Set r = Range("M" & addressrow & ":M" & lastrow).Find(what:="CSK NEARSIDE", LookIn:=xlValues)
firstaddress = r.Address
addressrow = Right(firstaddress, 2)
Csksn(i, 1) = Range("A" & addressrow)
Csksn(i, 2) = Range("B" & addressrow)
Csksn(i, 3) = Range("M" & addressrow)
Debug.Print r
Debug.Print firstaddress
Debug.Print addressrow
Next i
Loop While Not r Is Nothing And r.Address <> firstaddress
End If
Я исправил это, изменив параметры для l oop
For i = 2 To ncsksn
Set r = Range("M" & addressrow & ":M" & lastrow).Find(what:="CSK NEARSIDE", LookIn:=xlValues)
firstaddress = r.Address
addressrow = Right(firstaddress, 2)
Csksn(i, 1) = Range("A" & addressrow)
Csksn(i, 2) = Range("B" & addressrow)
Csksn(i, 3) = Range("M" & addressrow)
Debug.Print r
Debug.Print firstaddress
Debug.Print addressrow
Next i
Loop While Not r Is Nothing And r.Address <> firstaddress
End If
, и он будет печатать значения для каждой переменной (r, firstaddress, addressrow) на каждой итерации цикла for; но когда я go печатаю массив, используя эту l oop, ничего не появляется.
For i = LBound(Csksn) To UBound(Csksn)
For j = LBound(Csksn) To UBound(Csksn)
Debug.Print i, j, Csksn(i, j)
Next j
Next i
Чего мне здесь не хватает? Спасибо всем за ваши знания