嗨,我是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
答案 0 :(得分:4)
Cell.Interior.ColorIndex
不是 RGB 值,而是枚举值
可能的值有:
xlColorIndexAutomatic
表示自动颜色xlColorIndexNone
表示无颜色这就是您无法成功将其设置为 RGB 值的原因。
要将背景颜色设置为 RGB 颜色,请改用Interior.Color
属性。
答案 1 :(得分:0)
我发现在 RGB(#,#,#) 中使用带有 &H 标签的 Interior.Color 也能正常工作。
示例:
<块引用>RGB = 192 0 0 ------- 十六进制 = #C00000 ------ RGB(&HC0, &H0, &H0)
RGB = 84 130 53 ---- Hex = #548235 ------ RGB(&H54, &H82, &H35)
Range("C1").Interior.Color = RGB(&HC0, &H0, &H0)
Range("C1").Interior.Color = RGB(&H54, &H82, &H35)
Cells(1, 3).Interior.Color = RGB(&HC0, &H0, &H0)
Cells(1, 3).Interior.Color = RGB(&H54, &H82, &H35)