2016-03-04 304 views
1

我有以下代码,但在Set CellRange = wks.Range(srange).Select行上收到“Object Required”错误。Excel VBA选择单元格范围

我已经尝试了很多东西,但无法弄清楚。我想根据特定单元格值在选定范围上设置背景颜色。

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

Scott在注释中是正确的:在结尾处删除.Select。

选择单元格不会返回任何内容。

2

按我的意见,这已经得到了太多的赞誉,改变这种:

Set CellRange = wks.Range(srange).Select 

要:

Set CellRange = wks.Range(srange) 

取出.Select。其中一个不使用.Select功能设置范围对象。只需将范围对象设置为范围即可。

相关问题