我正在制作一个宏命令按钮,根据预计日期(col“X”)是在实际日期(col“Y”)之前、等于还是之后为范围的单元格着色。 它工作得很好,直到我尝试引入默认值,即没有内部颜色和文本“不完整”。
Sub ColorChangeTATDates()
Dim lr As Long
lr = Sheet1.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
Dim i As Long, projected As Range, actual As Range
For i = 3 To lr
Set projected = Range("X" & i)
Set actual = Range("Y" & i)
If actual.Value = " " Then actual.Interior.ColorIndex = 0 And actual.Cells.Value = "not complete"
If actual.Value < projected.Value Then actual.Interior.ColorIndex = 8
If actual.Value >= projected.Value Then actual.Interior.ColorIndex = 4
Debug.Print (projected.Value)
Debug.Print (actual.Value)
Next i
End Sub
发生了什么: 所有空单元格都会变成蓝色。 “不完整”不会打印到空单元格。
我需要修改我的循环,基本上将“Y”范围单元格值设置为“不完整”并且不填充(我觉得我不应该指定),直到满足某些条件。但我仍然是一个婴儿编码员,所以我在格式化它时遇到了麻烦,而不让它变得比需要的更复杂。
这一行:
If actual.Value = " " Then actual.Interior.ColorIndex = 0 And actual.Cells.Value = "not complete"
实际上读起来是这样的:
If actual.Value = " " Then actual.Interior.ColorIndex = (0 And actual.Cells.Value = "not complete")
这可以纠正类似的事情
If actual.Value = " " Then actual.Interior.ColorIndex = (FALSE And FALSE)
或者类似的东西。无论如何,当
if
条件为真时,您希望运行两行代码,因此您需要使用 if
块而不是单行代码:
If actual.Value = " " Then
actual.Interior.ColorIndex = 0
actual.Cells.Value = "not complete"
End If
您可能还想检查
If actual.Value = " " Then
行,因为 " "
是一个文字空格字符。空单元格将是 ""