更改单元格颜色时下标超出范围错误
嗨,我是 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
Hi i'm new to vba and i might not really undestand much of it, but i can't explain why i get a "Runtime error 9: Subscript out of range" error, when the code should change the background color of the cell to another
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Cell.Interior.ColorIndex
不是一个 RGB 值,而是一个枚举值。可能的值有:
xlColorIndexAutomatic
表示自动颜色xlColorIndexNone
表示无颜色这就是为什么您无法成功将其设置为 RGB 价值。
要将背景颜色设置为 RGB 颜色,请改用
Interior.Color
属性。Cell.Interior.ColorIndex
is not a RGB value, but an enum value.Possible values are:
xlColorIndexAutomatic
which means Automatic colorxlColorIndexNone
which means No colorThis is the reason for why you can't successfully set it to a RGB value.
To set the background color to a RGB color, use the
Interior.Color
property instead.我发现在 RGB(#,#,#) 中使用 Interior.Color 和 &H 标签也可以。
示例:
I discovered using Interior.Color with &H tag within RGB(#,#,#) works as well.
Example: