2016-09-27 2 views
0

Я новичок в VBA (несколько), и мне была назначена утомительная задача поиска более 5000 строк для выделения строк (от A до j с помощью colorindex = 6) на основе значения ячейки и это заставляет меня навсегда. В основном я пытаюсь разработать программу, которая ищет строку под столбцом C, если ячейка равна искомой строке, а затем смещается на 4 строки ниже от активной ячейки и для любого числа больше 37 и останавливается, когда находит ячейка в строке с цветом индекса 33. Любые идеи? Я начал и теперь застрял. Любые идеи помогут. БлагодаряИскать только строки в цветовом индексе

Sub Priority() 

'Declaring all worksheets in the excel file 
Dim US As Worksheet 
Dim Venr50 As Worksheet 
Dim Priority As Worksheet 
Dim CBT As String 

'setting all variables declared 
Set US = Worksheets("US CKS") 
Set Venr = Worksheets("VENR50 US 09.24") 
Set Priority = Worksheets("Priority") 

CBT = Priority.Range("$C$6").Value 

With US 

Dim x As Long 

For x = 4 To 3000 

If Cells(x, "C").Value = CBT Then 

ActiveCell.Interior.ColorIndex = 33 
ActiveCell.Offset(4, 0).Select 

End If 
+0

Когда ты найти CBT, вы хотите покрасить его 33, а затем смещать 4 строки? Затем вы хотите, чтобы цикл проверял, чтобы CBT начинался с этой строки смещения? если это так, вы должны либо увеличить x. Вам понадобится следующий x после вашего окончания. Если вы также получите свой внешний вид. –

+0

Я хочу, чтобы он нашел CBT (в диапазоне C), который уже является colorindex 33, а затем начните поиск чисел более 37 четырех строк ниже (все еще в диапазоне C) и выделите colorindex 6 (от A до J), пока он не встретится с ячейкой colorindex = 33. и остановится. –

ответ

0

Вы можете сделать еще один цикл в пределах вашего Для цикла, как показано ниже:

Dim x As Long 
Dim j as integer 

For x = 4 To 3000 

If Cells(x, "C").Value = CBT Then 

    For j=1 to 4 
     If Cells(x+j,"C").Value>37 then Cells(x+j,"C").ColorIndex = 6 
     If Cells(x+j,"C").Interior.ColorIndex = 33 then exit sub 
    Next j 

End If 

If Cells(x+j,"C").Interior.ColorIndex = 33 Then Exit Sub 

Next x 

EDIT: Для изменения цветового индекса нескольких строк вы можете использовать:

Range(Cells(x+j,"A"),Cells(x+j,"J")).Interior.ColorIndex = 6 
+0

СПАСИБО! Мне было интересно, почему между заявлением for и next j вы не включали end if's? Я думал, ты всегда должен был их включать. –

+0

Когда оператор If имеет только одно действие, вы можете поместить его в ту же строку после ключевого слова then. В противном случае, если у вас есть несколько вещей, которые нужно сделать в вашем операторе if, вы должны добавить их в дополнительную строку и включить и завершить If. Вы можете поместить их в отдельные строки с помощью End If, чтобы улучшить читаемость для себя. –

+0

Есть ли способ выделить индекс цвета 6 от a до J вместо этой одной ячейки? –

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