如何用VBA基于Excel某列日期更新另一列?语法错误求助
修正VBA中日期计算的语法错误
你的问题出在Date.Column(13)这行的语法错误——Date是VBA内置的返回当前日期的函数,不能用它来引用工作表的M列单元格。要获取当前行M列的日期值,需要使用正确的单元格引用语法。
修正后的完整代码
If Not Intersect(Target, Me.Columns(46)) Is Nothing Then If Target.Cells(1).Value = "Scheduled Audit" Then Me.Cells(Target.Row, "AU").Value = Format(Now, "mm/dd/yyyy HH:mm:ss") Me.Cells(Target.Row, "AV").Value = "Issue Audit Agenda" ' 引用当前行M列(第13列)的日期,减去30天后格式化 Dim mColumnDate As Date ' 先检查M列是否为有效日期,避免报错 If IsDate(Me.Cells(Target.Row, 13).Value) Then mColumnDate = Me.Cells(Target.Row, 13).Value Me.Cells(Target.Row, "AW").Value = Format(mColumnDate - 30, "mm/dd/yyyy HH:mm:ss") Else ' 可选:如果M列不是有效日期,设置提示或空值 Me.Cells(Target.Row, "AW").Value = "M列日期无效" End If End If End Sub
关键说明
- 用
Me.Cells(Target.Row, 13)或Me.Cells(Target.Row, "M")定位当前行的M列单元格,两种写法等价。 - 增加
IsDate判断,防止M列内容不是日期时触发运行时错误,提升代码稳定性。 - VBA中日期可以直接参与数值运算,日期减30即可得到30天前的日期。
内容的提问来源于stack exchange,提问作者fanglies
相关产品推荐
相关产品推荐

