我在B栏中有一个日期,C栏中的数字(天数)一直向下,并希望将列c中的值添加到B栏中的日期。
| A | B | C |
--------------------------------
Name 01/01/2016 5
Name2 09/01/2016 10
Name3 04/02/2016 3
在这种情况下,第1行将成为06/01/2016,第2行将成为2016年1月19日,第3行将成为07/02/2016。
我想检查添加是否小于TODAY,如果添加等于或大于TODAY,则突出显示红色单元格。
到目前为止,这是我的代码。
Private Sub Workbook_Open()
Dim myDate As Date
For Each cell In Range("B2", Range("B2").End(xlDown))
myDate = DateAdd("d", ) 'stuck here
If myDate >= Date
cell.Interior.ColorIndex = 3
cell.Font.ColorIndex = 2
cell.Font.Bold = True
End If
Next
End Sub
答案 0 :(得分:3)
试试这个,但我认为Kilian Hertel给出的答案是首选方法。
当您打开工作簿时运行宏可能会继续在C列中添加带有数字的日期,这样它就会不断增加我不知道是否需要。
Private Sub Workbook_Open()
Dim wk As Worksheet
Set wk = Sheet1 'Change it to the preferred sheet number (!Not the Sheet Name)
Dim FRow As Long
FRow = wk.Range("B" & wk.Rows.Count).End(xlUp).Row 'Finding Last Row
For Each cell In wk.Range("B2" & ":B" & FRow) 'Loop from B2 to B & Frow
cell.Value2 = cell.Value2 + wk.Range("C" & cell.Row) 'Add the Date with the number in the corresponding row of `C` Column
If cell.Value2 >= Date Then 'Check if the date in column B is greater than or equal to Today's Date
'If yes the do this
cell.Interior.ColorIndex = 3
cell.Font.ColorIndex = 2
cell.Font.Bold = True
Else: End If
Next cell
End Sub
答案 1 :(得分:2)
你不能用Excel普通公式和条件格式来做到这一点吗?
我不会使用VBA。
如果您以标准格式正确格式化日期,则会显示一个数字。只需在ColumnD中计算DateCellNumber(Column B + ColumnC)然后我认为您可以使用TODAY()公式进行条件格式化。
奥莱特?
答案 2 :(得分:2)
对代码进行了更改。试试这个:
Private Sub Workbook_Open()
Dim myDate As Date
For Each cell In Range("B2", Range("B2").End(xlDown))
myDate = DateAdd("d", CDbl(cell.Offset(0, 1).Value), DateValue(cell.Value))
If myDate >= Now() Then
cell.Interior.ColorIndex = 3
cell.Font.ColorIndex = 2
cell.Font.Bold = True
End If
Next
End Sub
答案 3 :(得分:1)
另一种实现方式如下
Private Sub Workbook_Open()
Dim i As Long
Dim myDate As Date
lastrow = Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To lastrow
Range("B" & i).Value = DateAdd("d", Range("B" & i).Value, CDate(Range("D" & i).Value))
If Range("B" & i).Value >= Now() Then
Range("B" & i).Interior.ColorIndex = 3
Range("B" & i).Font.ColorIndex = 2
Range("B" & i).Font.Bold = True
End If
Next i
End Sub