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