我有一个电子表格,其中包含第1行中的所有列标题。单元格B2包含日期。然后我在(K2到AH2)之后有25个月的列,行K1到AH1中的列标题是月份,从当前月份开始。我试图突出显示从K2到AH2的所有单元格,只要它们的列标题日期小于B2中的值。
例如,B2是6月13日至14日。 K1是今天月份的公式。所以公式是Today(),格式为MMM-YY
(FEB-14)。
我认为这很简单,因为我只是比较2个日期并突出显示不同的单元格,如果一个小于另一个。我猜我因为没有将B2日期转换为月份格式而收到错误?这是我收到的错误。
Run-time error '1004': Application-defined or object-defined error.
这是我的代码:
Sub Highlight()
Dim firstColumn As Integer
Dim lastColumn As Integer
Dim firstRow As Integer
Dim lastRow As Integer
Dim rowCounter As Integer
Dim columnCounter As Integer
firstColumn = 9
firstRow = 2
lastColumn = 32
lastRow = 6
columnCounter = firstColumn
Do Until columnCounter = lastColumn
If Cells(K, 1).Value < Cells(B, 2).Value Then
Cells(columnCounter, lastRow).Interior.Color = vbYellow
End If
columnCounter = columnCounter + 1
Loop
End Sub
答案 0 :(得分:2)
由于这行代码
,您很可能会发生错误If Cells(K, 1).Value < Cells(B, 2).Value Then
如果您正在使用单元格,则需要指定数字行和col(按此顺序),即单元格(1,2)指的是第1行第2列或B1。什么是K和B?它们是变量,因为它们未在您提供的代码中声明或初始化。因此,它试图在第0行找到不存在的单元格。
如果要指定单元格的字母数字位置,请使用Range("K1")
或Cells(1, "K")
时请记住该行首先
此外,您的代码还存在其他一些问题,而这些问题无法完成您希望它执行的操作。
If Cells(K,1).Value&lt;单元格(B,2).Value Then
即使您修复了单元格引用K1和B2,循环的每次迭代都会比较K1和B2。
此处的参数必须先是行然后是列。此外,变量lastRow永远不会更改,您已将其分配给6,并且对于循环的每次迭代它将为6
至少你正在做什么,你需要2个嵌套循环来遍历行和列!我已经为您编写了一些示例代码来指导您。如果您需要更多帮助,请告诉我
Sub Highlight()
Dim firstColumn As Integer
Dim lastColumn As Integer
Dim firstRow As Integer
Dim lastRow As Integer
Dim rowCounter As Integer
Dim columnCounter As Integer
firstColumn = 9
firstRow = 2
lastColumn = 32
lastRow = 6
For columnCounter = firstColumn To lastColumn
For rowCounter = firstRow To lastRow
If Cells(1, columnCounter) < Cells(rowCounter, "B") Then
Cells(rowCounter, columnCounter).Interior.Color = vbYellow
End If
Next rowCounter
Next columnCounter
End Sub