2016-05-06 6 views
0

В моей таблице у меня есть список данных в столбце с номерами позиций. Учитывая значение (либо «1 Quad», либо любое значение A-D) в смежной ячейке, не должно быть строк с повторяющимися номерами элементов или 8 строк с номерами повторяющихся элементов соответственно в том же столбце. Если есть больше или меньше требуемого количества номеров позиций (слишком много повторяющихся чисел или пропущенных номеров), тогда мне бы хотелось, чтобы весь переменный диапазон идентичных номеров элементов выделялся (что я просто делаю с Fill).Заполните ячейки на основе содержимого диапазона переменных ячеек

For i = 3 To (mainRow - 1) 
    k = i 
    j = i 
    If Range("G3") = "'1 Quad" Then 
     If Range("E" & i).Value > (Range("E" & (i + 1)).Value - 1) Then 
      Range("E" & i, "E" & (i + 1)).Interior.Color = RGB(255, 0, 0) 
      i = i + 1 
     End If 
     If Range("E" & i).Value < (Range("E" & (i + 1)).Value - 1) Then 
      Range("E" & i, "E" & (i + 1)).Interior.Color = RGB(0, 255, 0) 
      i = i + 1 
     End If 
    ElseIf Range("G3").Value = "A" Or "B" Or "C" Or "D" Then 
     Do 
      If Range("E" & j).Value = Range("E" & (j + 1)).Value Then 
       j = j + 1 
      End If 
      If Range("E" & j).Value <> Range("E" & (j + 1)).Value Then 
       If j < 8 Then 
        For k = i To j 
         Range("E" & i).Interior.Color = RGB(255, 0, 0) 
        Next k 
       End If 

       If j > 8 Then 
        For k = i To j 
         Range("E" & i).Interior.Color = RGB(0, 255, 0) 
        Next k 
       End If 
       Exit Do 
      End If 
     While j < (mainRow - 1) 
     i = k 
    End If 

Next i 

С помощью этого кода я получаю ошибку «End If без блока Если», который не кажется, дело вообще. Если я удалю последний «End IF», я получаю сообщение «Next without For». Спасибо заранее за вашу помощь.

** Я отредактировал код для включения end ifs и по-прежнему получал ту же ошибку.

+2

Ваши два 'Если J <8' и' If J> 8' не имеют закрытие 'End If', я не думаю. – BruceWayne

+0

Я их там и получил ту же ошибку (только что проверил ее снова). В любом случае оба они выходят из цикла do. –

+0

что-нибудь должно произойти, когда J = 8? может быть, нет, но у вас был случай, когда его не 8 покрывали, поэтому я подумал, что попрошу сделать вывод, что вы имели в виду вместо = = или <=. –

ответ

2

Вам не хватает 3 End Ifs, а синтаксис Do-While выключен. Попробуйте это вместо этого:

Do While j < (mainRow - 1) 
     If Range("E" & j).Value <> Range("E" & (j + 1)).Value Then 
      If j < 8 Then 
       For k = i To j 
        Range("E" & i).Interior.Color = RGB(255, 0, 0) 
       Next k 
       Exit Do 
      End If 
      If j > 8 Then 
       For k = i To j 
        Range("E" & i).Interior.Color = RGB(0, 255, 0) 
       Next k 
       Exit Do 
      End If 
     End If 
    Loop 
+0

Я вернул свой «конец ifs» и все еще получаю ту же ошибку, что и последний «конец if» в моем исходном коде. Благодарю. –

+1

Я понял. Проверьте исправление. Не уверен, хотите ли вы i = k до Loop –

+0

Do While/loop исправил проблему. Благодаря! –

Смежные вопросы