2012-02-20 139 views
1

嗨,我是vba的新手,我可能不会真正打开它的大部分内容,但我无法解释为什么出现“运行时错误9:下标超出范围”错误,当代码应该改变单元格的背景颜色到另一更改单元格颜色时下标超出范围错误

Sub CompareWorksheets(ws1 As Worksheet, ws2 As Worksheet) 
    Dim r As Long, c As Integer 
    Dim lr1 As Long, lr2 As Long, lc1 As Integer, lc2 As Integer 
    Dim maxR As Long, maxC As Integer, cf1 As String, cf2 As String 
    Dim DiffCount As Long 
    Application.ScreenUpdating = False 
    With ws1.UsedRange 
     lr1 = .Rows.Count 
     lc1 = .Columns.Count 
    End With 
    With ws2.UsedRange 
     lr2 = .Rows.Count 
     lc2 = .Columns.Count 
    End With 
    maxR = lr1 
    maxC = lc1 
    If maxR < lr2 Then maxR = lr2 
    If maxC < lc2 Then maxC = lc2 
    DiffCount = 0 
    For c = 1 To maxC 
     For r = 1 To maxR 
      cf1 = "" 
      cf2 = "" 
      On Error Resume Next 
      cf1 = ws1.Cells(r, c).FormulaLocal 
      cf2 = ws2.Cells(r, c).FormulaLocal 
      On Error GoTo 0 
      If cf1 <> cf2 Then 
       DiffCount = DiffCount + 1 
       ws1.Cells(r, c).Activate 
       ws1.Cells(r, c).Select 
=============> ws1.Cells(r, c).Interior.ColorIndex = RGB(200, 20, 20) <============ 
       End If 
      Next r 
     Next c 
     Application.ScreenUpdating = True 
    End Sub 

回答

4

Cell.Interior.ColorIndex不是RGB值,而是一个枚举值。
可能的值是:

  • xlColorIndexAutomatic这意味着自动色彩
  • xlColorIndexNone这意味着无颜色

这是为什么你不能成功地将其设置为RGB值的原因。

要将背景颜色设置为RGB颜色,请改为使用Interior.Color属性。

+0

非常感谢,修复它 – JustAddX 2012-02-20 22:07:31