If Else с 2 условиями и использованием приводит к части if и else - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть этот код, он должен проверять определенный диапазон в третьем столбце для значения 4, и если ячейка имеет значение 4, он должен проверять значение соседней ячейки в четвертом столбце. Если это значение меньше, чем y, предполагается присвоить значение 4 5 ячейкам в 15-м столбце, начиная с строки, в которой изначально было найдено 4. Если оно выше, чем следует, следует назначить его 8 ячейкам в столбце 15, начиная с строки, в которой изначально было найдено 4.

Проблема, которая сохраняется, заключается в том, что спецификация ячейки в части Else, например .Cells(x - 1, a).Value = 5, приводит к ошибке. Если я использую только часть If, она работает нормально.

Sub einfügen()

Dim a As Integer
Dim x As Integer
Dim y As LongLong

a = 15
y = 100000


With ActiveWorkbook.ActiveSheet

For x = 1 To 112
    If .Cells(x, 3).Value = 4 And ActiveWorkbook.ActiveSheet.Cells(x, 3).Offset(0, 1) <= y Then

            .Cells(x - 1, a).Value = 4
            .Cells(x - 2, a).Value = 4
            .Cells(x - 3, a).Value = 4
            .Cells(x - 4, a).Value = 4
            .Cells(x - 5, a).Value = 4
    Else

            .Cells(x - 1, a).Value = 4
            .Cells(x - 2, a).Value = 4
            .Cells(x - 3, a).Value = 4
            .Cells(x - 4, a).Value = 4
            .Cells(x - 5, a).Value = 4
            .Cells(x - 6, a).Value = 4
            .Cells(x - 7, a).Value = 4
            .Cells(x - 8, a).Value = 4


   End If


   Next

End With
End Sub

1 Ответ

0 голосов
/ 10 сентября 2018

мне не очень понятно, что должно "начинаться со строки, в которой изначально была найдена цифра 4." фактически означает, поэтому я предположил, что она должна начинаться с текущей строки x вниз

Более того, основываясь на вашем повествовании, вы должны разделить первые ЕСЛИ два условия на два, иначе ваш код всегда будет пытаться заполнить некоторые ячейки 4

.

вот фрагмент, который вы можете попробовать:

With ActiveWorkbook.ActiveSheet
    For x = 1 To 112
        If .Cells(x, 3).Value = 4 Then '" if a cell has the value 4"
            If .Cells(x, 3).Offset(0, 1) <= y Then '"check the value of the adjacent cell in the fourth column. If this value is smaller than y..."
                .Cells(x, a).Resize(5).Value = 4 '"assign the value 4 to the 5 cells in the 15th column starting in the row in which the 4 was initially found."
            Else '"If it's higher"
                .Cells(x, a).Resize(8).Value = 4 '"assign it to 8 cells in column 15 starting in the row in which the 4 was initially found."
            End If
        End If
    Next
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...