Double 'for' l oop - работает только внутренний l oop - PullRequest
2 голосов
/ 13 апреля 2020

мой первый пост здесь. Вы, ребята, помогли мне миллион раз, но на этот раз мне не удалось найти ответ в Google или здесь.

Я создал 2 для циклов, один внутри другого в Excel, сокращенная версия здесь:

For r = 3 To 25
    For col = rota_current_col To 100
        Debug.Print "Current position:" & r & "," & col     // + some code later
    Next col
//some code
Next r

И первый l oop вообще не работает. Я не касаюсь ни одного из этих значений (r, col) в коде внутри циклов. Эта отладочная печать показывает значения от 3,7 до 3100, но она не повторяется до четвертого значения r.

Надеюсь, это достаточно ясно, заранее спасибо !.

РЕДАКТИРОВАТЬ 1: Полный l oop согласно запросу:

For r = 3 To 25 ' NOT WORKING :(

    For col = rota_current_col To 100
        Debug.Print "Current position:" & r & "," & col & " current Rota position: " & rota_current_row & "," & rota_current_col & " current Comp position: " & comp_current_row & "," & comp_current_col

        Select Case Cells(rota_current_row, rota_current_col)
        Case "U", "UZ", "U1", "UZ1"
            If Cells(rota_current_row, rota_current_col) <> Cells(comp_current_row, comp_current_col) Then
                result.Cells(current, 1) = rota.Cells(rota_current_row, 1)
                result.Cells(current, 2) = rota.Cells(rota_current_row, 2)
                result.Cells(current, 3) = rota.Cells(rota_current_row, 3)
                result.Cells(current, 4) = rota.Cells(rota_current_row, rota_current_col)
                result.Cells(current, 5) = rota.Cells(rota_current_row, rota_current_col).Address
                result.Cells(current, 6) = comp.Cells(comp_current_row, comp_current_col)
                result.Cells(current, 7) = comp.Cells(comp_current_row, comp_current_col).Address
                current = current + 1
            End If
        End Select

        rota_current_col = rota_current_col + 1
        comp_current_col = comp_current_col + 1

    Next col

rota_current_row = rota_current_row + 1
comp_current_row = comp_current_row + 1

Next r

Хотите, чтобы я вставил полный код?

1 Ответ

0 голосов
/ 13 апреля 2020

r не будет go до 4 до col = 100. Внутренний l oop должен завершиться sh, а затем начинается внешний l oop.

попробуйте это

Sub yo()
r = 3
For col = rota_current_col To 100
    Debug.Print "Current position:" & r & "," & col
    r = r + 1
    If r = 26 Then Exit Sub
Next col
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...