我有一个检查,确保在继续使用该函数之前,行中没有任何单元格用红色(colorindex 3)填充,但是ActiveCell.Offset(a,b).Interior.ColorIndex奇怪地返回'-4142' 。有没有人在我的代码中发现错误/注意到错误?
If UCase(ActiveCell.Offset(0, -1).Value) = "X" Then
For i = 0 To 7
If ActiveCell.Offset(0, i).Interior.ColorIndex = 3 Then
MsgBox "Correct fields highlighted in red."
Exit Sub
End If
Next
ident = ActiveCell.Value
verNo = ActiveCell.Offset(0, 1).Value
title = ActiveCell.Offset(0, 2).Value
status = ActiveCell.Offset(0, 3).Value
location = ActiveCell.Offset(0, 4).Value
appDate = ActiveCell.Offset(0, 6).Value
ccRef = ActiveCell.Offset(0, 7).Value
我最初添加突出显示的地方:
With ThisWorkbook.Worksheets("Document Index").Range("B5:B500")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(($B5=""""),
$A5=""X"")"
.FormatConditions(1).Interior.ColorIndex = 3
.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(($B5<>""""),
$A5=""X"")"
.FormatConditions(2).Interior.ColorIndex = 37
End With
答案 0 :(得分:1)
有很多原因导致代码不起作用。并且所有这些都隐藏在您未显示的代码部分中......
一般来说,只是猜测一下,您是否拥有ActiveCell
对工作表的书写权限。因此,你必须解锁它。
另一个选择是,您选择了一个图表,而不是工作表。
第三种选择是你正在做其他一些技巧。通常,像这样的普通代码有效:
Sub Test
ActiveCell.Offset(0,0).interior.ColorIndex =3
End Sub
但我真的认为错误是我指出的第一个错误,当我使用ActiveCell
锁定工作表时我得到了错误:
关于格式条件下的颜色索引,您应该使用Pearson先生提供的很好的函数:
Function ColorIndexOfCF(Rng As Range, _
Optional OfText As Boolean = False) As Integer
Dim AC As Integer
AC = ActiveCondition(Rng)
If AC = 0 Then
If OfText = True Then
ColorIndexOfCF = Rng.Font.ColorIndex
Else
ColorIndexOfCF = Rng.Interior.ColorIndex
End If
Else
If OfText = True Then
ColorIndexOfCF = Rng.FormatConditions(AC).Font.ColorIndex
Else
ColorIndexOfCF = Rng.FormatConditions(AC).Interior.ColorIndex
End If
End If
End Function