@Bartiwka

Как исправить ошибку при выполнений условий? VBA, Excel?

Добрый день! Объясню суть самой проблемы! Я пытался реализовать условие, которое должно выполнить:
если предыдущая ячейка зеленая, то нужно вставить значение на текущую ячейку, но тут возникает ошибка которую я не понимаю и возможно не правильно гуглил(короче не нашел ответа). Прошу помощи у Вас! Для полной наглядности предоставляю скриншот таблицы и собственно сам код. Скорее всего я что то упустил или не учел! Буду благодарен за Вашу помощь!5b0c19f8d6c6b693207784.png
Sub perebor()
Dim sh As Range
Dim i As Long
Dim j As Long
Dim bh As Range

       Set wbs = ThisWorkbook.Worksheets("table1")
       Set WBT = ThisWorkbook.Worksheets("mnd")

i = 3
j = 9
For Each sh In wbs.Range("N3:N71")
For Each bh In wbs.Range("M3:M71")
'белый -- 16777215
'серый -- 13421772
' зеленый -- 5880731
' оранжевый -- 4626167
If sh.Interior.Color = 16777215 Then



If bh.Interior.Color = 5880731 Then
j = j - 1

wbs.Cells(i, 14).Value = WBT.Cells(j, 1).Value
wbs.Cells(i, 15).Value = WBT.Cells(j, 1).Value
wbs.Cells(i, 14).Interior.Color = WBT.Cells(j, 1).Interior.Color
wbs.Cells(i, 15).Interior.Color = WBT.Cells(j, 1).Interior.Color


i = i + 1
End If

'wbs.Cells(i, 14).Value = WBT.Cells(j, 1).Value
'wbs.Cells(i, 15).Value = WBT.Cells(j, 1).Value
'wbs.Cells(i, 14).Interior.Color = WBT.Cells(j, 1).Interior.Color
'wbs.Cells(i, 15).Interior.Color = WBT.Cells(j, 1).Interior.Color



ElseIf sh.Interior.Color = 13421772 Then
wbs.Cells(i, 14).Value = wbs.Cells(i, 14).Value

i = i + 1

End If

Next bh

Next sh


End Sub
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 1
Dr_Elvis
@Dr_Elvis
В гугле забанен
Код ошибок не выдает, однако не выполняет условия.
вот например рабочий вариант у меня получился, однако в одном месте ты берешь значение ячейки и туда же вставляешь, что непонятно зачем(я отметил (???))
Sub perebor()
    Dim i As Long
    Dim j As Long
    Dim bh As Range
    Set wbs = ThisWorkbook.Worksheets("table1")
    Set WBT = ThisWorkbook.Worksheets("mnd")
    i = 3
    j = 9
        For Each bh In wbs.Range("M3:M11")
            'белый -- 16777215
            'серый -- 13421772
            ' зеленый --  5880731
            ' оранжевый -- 4626167
            mcolor = wbs.Cells(i, 13).Interior.Color
            ncolor = wbs.Cells(i, 14).Interior.Color
            If ncolor = 16777215 And mcolor = 5880731 Then
                    j = j - 1
                    wbs.Cells(i, 14).Value = WBT.Cells(j, 1).Value
                    wbs.Cells(i, 15).Value = WBT.Cells(j, 1).Value
                    wbs.Cells(i, 14).Interior.Color = WBT.Cells(j, 1).Interior.Color
                    wbs.Cells(i, 15).Interior.Color = WBT.Cells(j, 1).Interior.Color
            ElseIf ncolor = 13421772 Then
                wbs.Cells(i, 14).Value = wbs.Cells(i, 14).Value '(???)
            End If
            i = i + 1
        Next bh
End Sub
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы