You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:57:06