2015-12-16 3 views
0

У меня есть макрос excel для цветной строки (из столбца A в E) «i», начиная с строки 4 на основе значения в «E (i)»; код выглядит следующим образом:Excel VBA to Loop Coloring Range на основе значения ячейки

Dim i As Integer 
Dim arrSht, k 
arrSht = Array("1. Asia", "2. Asia", "3. Asia", _ 
    "4. Asia", "6. Europe", "7. Europe") 

For k = LBound(arrSht) To UBound(arrSht) 
    With Worksheets(arrSht(k)) 
     For i = 4 To 11 
      If Cells(i, 5).Value >= 0.25 Or _ 
       Cells(i, 5).Value <= -0.25 Then 
      Range(Cells(i, 1), Cells(i, 5)).Interior.Color = 65535 
      End If 
     Next i 
    End With 
Next k 

End Sub 

Код прекрасно работает в окраске строк, за исключением того, что это только цвет строки для активного листа. Когда я пытался поставить что-то вроде

Workbooks("Color row.xlsx").Sheets(arrSht(k)).Range(Cells(i, 1), Cells(i, 5)).Interior.Color = 65535 

Я получаю «Ошибка выполнения„438“: Объект не поддерживает это свойство или метод» для этой строки. Я не знаю, что я должен положить, чтобы он раскрашивал ячейку для каждого листа в указанном массиве.

Пожалуйста, помогите!

Большое спасибо :)

+0

положите '.' перед каждой ячейкой и диапазоном. '.Cells (i, 5) .Value> = 0.25 or' –

ответ

0

Просто немного изменить свой код так:

Dim i As Integer 
Dim arrSht, k 
arrSht = Array("1. Asia", "2. Asia") ', "3. Asia", "4. Asia", "6. Europe", "7. Europe") 

For k = LBound(arrSht) To UBound(arrSht) 
    Worksheets(arrSht(k)).Activate 
    With ActiveSheet 
     For i = 4 To 11 
      If Cells(i, 5).Value >= 0.25 Or _ 
       Cells(i, 5).Value <= -0.25 Then 
      Range(Cells(i, 1), Cells(i, 5)).Interior.Color = 65535 
      End If 
     Next i 
    End With 
Next k 

Обратите внимание, что я использовал Worksheets(arrSht(k)).Activate, а затем With ActiveSheet.

+0

Это работает отлично! Большое спасибо!! – vbanoob27

+0

Почему downvote? – zedfoxus

+0

не я .. я уже повышу его – vbanoob27

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