在更改单元格颜色时下标超出范围错误

嗨,我是新来的vba,我可能不真正undestand很多,但我不能解释为什么我得到一个“运行时错误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 

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

  • xlColorIndexAutomatic这意味着自动颜色
  • xlColorIndexNone表示没有颜色

这就是为什么您无法成功将其设置为RGB值的原因。

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