2016-03-04 3 views
1

У меня есть следующий код, но я получаю сообщение об ошибке «Object Required» в строке Set CellRange = wks.Range(srange).Select.Excel VBA Select Cell Ranges

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

Function RowColor() 
    Application.Volatile 
    Dim wks As Worksheet 
    Set wks = ActiveSheet 
    Dim x As Integer 
    Dim FirstRow As Integer 
    Dim CellRange As Range 
    Dim LastRow As Long 

    LastRow = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row 
    FirstRow = 6 

    'Loop through each row 
    ScreenUpdating = False 

    For x = FirstRow To LastRow 
    Let srange = "A" & x & ":" & "Z" & x 
    Set CellRange = wks.Range(srange).Select 


    Select Case wks.Cells(x, "R").Value 

     Case "O" 
      CellRange.Interior.Color = RGB(255, 192, 0) 

     Case "D" 
      CellRange.Interior.Color = RGB(255, 255, 0) 
     Case "C" 
     If wks.Cells(x, "Y") >= 0 Then 
      CellRange.Interior.Color = RGB(146, 208, 80) 
     Else 
      CellRange.Interior.Color = RGB(255, 0, 0) 
     End If 
     Case "W" 
      CellRange.Interior.Color = RGB(0, 176, 240) 
    End Select 
    Next x 
    ScreenUpdating = True 

End Function 
+5

Удалите '.Select' на конце. –

+0

@WaiHaLee Если OP хочет получить реальный ответ, я буду. Они проголосовали не за «кражу» моего ответа, а за то, что они не отвечают на комментарии. Если бы они поместили свои комментарии, они принадлежали и удалили их ответы, они вернут свои ответы. –

ответ

-3

Скотт в комментариях верен: удалите .Выберите в конце.

Отбор ячеек не возвращает ничего.

2

В соответствии с моим комментарием, который получил слишком много признания, это изменить:

Set CellRange = wks.Range(srange).Select 

To:

Set CellRange = wks.Range(srange) 

Снимите .Select. Один не задает объект диапазона с использованием funstion .Select. Просто установите объект диапазона в диапазон.