Получить вложенный раздел цикла For для перемещения вместе с внешним - PullRequest
0 голосов
/ 15 мая 2018

У меня есть цикл, который проходит по листу и редактирует цвет ячейки в зависимости от того, что находится в другой ячейке.

Весь этот код выполняется из MS Access на листе Excel, который экспортирует база данных.

For StartingCoumn2 = 11 To 14
    Column2 = StartingCoumn2
    For startingColumn = 15 To 18 'What columns we looking for
        ColumnCalc = startingColumn
        For startingRow = StartRow To LastWeekEndRow
            If .Cells(startingRow, ColumnCalc).Value = 0 Then
                .Cells(startingRow, ColumnCalc).Interior.ColorIndex = 3
            ElseIf .Cells(startingRow, ColumnCalc).Value >= .Cells(startingRow, Column2).Value Then
                .Cells(startingRow, ColumnCalc).Interior.ColorIndex = 4
            ElseIf .Cells(startingRow, ColumnCalc).Value < .Cells(startingRow, Column2).Value Then
                .Cells(startingRow, ColumnCalc).Interior.ColorIndex = 44
            Else
                .Cells(startingRow, ColumnCalc).Interior.ColorIndex = 3
            End If
        Next startingRow
    Next startingColumn
Next StartingCoumn2

Моя проблема в startingColumn, и StartingCoumn2 нужно переместить оба +1, когда он заканчивает строки.

Например, я заполнил код, надеюсь, это поможет людям концептуально

For StartingCoumn2 = 11 To 14
    Column2 = 11
    For startingColumn = 15 To 18 'What columns we looking for
        ColumnCalc = 15
        For startingRow = 9 To 12
            If .Cells(9, 15).Value = 0 Then
                .Cells(9, 15).Interior.ColorIndex = 3
            ElseIf .Cells(9, 15).Value >= .Cells(9, 11).Value Then
                .Cells(9, 15).Interior.ColorIndex = 4
            ElseIf .Cells(9, 15).Value < .Cells(9, 11).Value Then
                .Cells(9, 15).Interior.ColorIndex = 44
            Else
                .Cells(startingRow, ColumnCalc).Interior.ColorIndex = 3
            End If
        Next startingRow
    Next startingColumn
Next StartingCoumn2

Когда он заканчивает строку и переходит к следующему столбцу, который требует редактирования (startingColumn), сравниваемый столбец (StartingCoumn2) не перемещается, то есть сравниваются неправильные столбцы.

For StartingCoumn2 = 11 To 14
    Column2 = 11
    For startingColumn = 15 To 18 'What columns we looking for
        ColumnCalc = 16
        For startingRow = 9 To 12
            If .Cells(9, 16).Value = 0 Then
                .Cells(9, 16).Interior.ColorIndex = 3
            ElseIf .Cells(9, 16).Value >= .Cells(9, 11).Value Then
                .Cells(9, 16).Interior.ColorIndex = 4
            ElseIf .Cells(9, 16).Value < .Cells(9, 11).Value Then
                .Cells(9, 16).Interior.ColorIndex = 44
            Else
                .Cells(startingRow, ColumnCalc).Interior.ColorIndex = 3
            End If
        Next startingRow
    Next startingColumn
Next StartingCoumn2

Как мне заставить StartingCoumn2 двигаться одновременно?Я пробовал Next startingColumn, StartingCoumn2, но ничего не произошло.

1 Ответ

0 голосов
/ 15 мая 2018

То, что вам нужно, это не другой цикл. Вам просто нужно значение смещения. Вы пытаетесь сравнить два столбца в одной строке, которые представляют собой статическое значение. Так что не зацикливайтесь, просто добавьте смещение.

Например, у вас есть: .Cells(startingRow, ColumnCalc).Value >= .Cells(startingRow, Column2)

Вы бы изменили все экземпляры Column2 на ColumnCalc + 4.

Затем, когда он перемещается к следующему столбцу, он автоматически проверяет столбец смещения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...