2012-02-20 5 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

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