【发布时间】:2015-09-08 15:56:11
【问题描述】:
我有这个 sn-p 代码,它将根据不同的参数突出显示表格中不同颜色的选定数据行:
Public Sub HighlightRecentSampleRequests()
Dim sht As Worksheet
Dim LastRow As Long
Dim cell As Range
Dim dt, txt
Set sht = Worksheets("Sample Transfer Log")
LastRow = sht.Cells(Rows.Count, "A").End(xlUp).Row
For Each cell In sht.Range("K3:K" & LastRow).Cells
dt = cell.Value
txt = cell.Offset(0, -3).Value
If dt >= Date - 7 And txt = "Sample Receipt" Then
cell.Range("A1:P1").Offset(0, -10).Interior.ColorIndex = 45 'orange
ElseIf dt >= Date Then
cell.Range("A1:P1").Offset(0, -10).Interior.ColorIndex = 6 'yellow
Else
cell.Range("A1:P1").Offset(0, -10).Interior.Color = RGB(220, 230, 242) 'default color
End If
Next
End Sub
我对我的原始代码进行了修改,以生成上述代码以使其达到我想要的效果。现在,当我运行系统时,我不断收到“内存不足”消息。这似乎是由于 If 语句的最后一部分,其中不符合先前条件的所有单元格都将突出显示为默认颜色。我尝试使用变量引用范围,然后在完成使用后将该变量设置为“无”,但返回了“无效使用 Null”的消息,此后这些变量无用,需要删除代码再次工作。
基本上,我想在不搞砸整个代码的情况下摆脱“内存不足”消息。
【问题讨论】:
-
有什么理由不使用条件格式而不是 vba?
-
不确定 range.interior.color 是否会采用十六进制,但您可以尝试。 dmcritchie.mvps.org/excel/colors.htm
-
不设置任何颜色怎么样。您出于什么原因将其设置为默认值?不是已经默认了吗?
-
您可以使用条件格式并根据条件将其放在整个范围内
-
@KarlGilbert 您对条件格式解决方案感兴趣吗?
标签: excel vba null out-of-memory