给 Cell 一个名称以供您参考,您可以使用传递给 Worksheet_Change 函数的 Target 参数做一些简洁的事情:
'Add this function to the sheet that has the cell being
'+changed by the user (Sheet 2)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strCellName As String
strCellName = "ChangeMe"
'If the cell we changed was the ChangeMeCell
If Target.Address = Sheet2.Range(strCellName).Address Then
'Store value
Dim intLastRow, intValue As Integer
intValue = Range(strCellName).Value
'Find the cell in Sheet 1 Column A that matches this month
intLastRow = Sheet1.Range("A:A").End(xlDown).Row
For Each cl In Sheet1.Range("A1:A" & intLastRow).Cells
'Ensure cell value is date
If IsDate(cl.Value) Then
'If date is today's date
'Note that Math.Round(<date>, 0 ) essentially removes the time
'+from any date value so #01/02/03 04:05:06# becomes #01/02/03#
If Math.Round(cl.Value,0) = Math.Round(Now,0) Then
'Update column B's value
Sheet1.Range("B" & cl.Row).Value = intValue
End If
End If
Next
End If
End Sub
这假设您的工作表布局在 Sheet1 中具有“发票值”,并且在 Sheet2 中更改了单元格。您需要为该单元格命名。
使用功能栏左侧的单元格名称框调用更改“ChangeMe”的单元格或您希望将其更改为的任何内容,在函数的第一行更新该单元格名称,此函数将完成所有其余操作。
请务必注意,日期必须针对您的系统区域正确格式化。以确保它显示正确的月份 - 将它们格式化为 LongDate 以便您可以将它们视为 2013 年 3 月 8 日而不是 03/08/13,这可能会随着时间的推移而变得混乱。作为一名英国程序员,约会是我生命中的祸根!
编辑:我已经更新了代码以通过完整日期减去时间来比较日期,而不是之前的每月比较,如果您仍然需要减去或添加一个月到任一日期值,只需使用DateAdd("m", <date>, <value>)
添加或减去月份.
编辑: DatePart 功能页面对于那些想了解更多有关 DatePart() 的人来说是一个有用的资源