MS Access时间计算结果不显示,出现Run-time Error '13'类型不匹配
MS Access时间计算类型不匹配错误解决办法
核心问题分析
报错Run-time Error '13': Type Mismatch的直接原因是**Me.nM03EI为NULL**,Access中NULL值参与算术运算会触发类型不匹配,而Excel会自动将NULL视为0处理,这是两者的核心差异。
具体修复步骤
处理NULL值
在计算前用Nz()函数将Me.nM03EI的NULL替换为默认时间(比如当天0点),避免空值干扰运算:Dim expectedStartTime As Date expectedStartTime = Nz(Me.nM03EI, Date) ' 将NULL替换为当天00:00:00统一数据类型计算
Access中时间/日期类型运算需明确转换,避免隐式类型冲突。假设原Excel逻辑公式为(TotalLines / (ExpectedLinesPerHour * HoursInDay)) + ExpectedTimeIn,转换为Access VBA代码:Dim totalLines As Integer Dim linesPerHour As Double Dim hoursInDay As Integer Dim calculatedTime As Date totalLines = Me.nM03TL linesPerHour = 6.1 hoursInDay = 24 ' 先计算耗时(小时),再转换为时间间隔加到起始时间上 calculatedTime = expectedStartTime + (totalLines / (linesPerHour * hoursInDay)) Me.目标结果控件名 = calculatedTime ' 替换为你要显示结果的控件名称验证控件数据类型
确保显示结果的控件数据类型设置为“时间/日期”,若为文本类型也会导致类型不匹配。
额外优化点
- 若只需显示时间部分,可用
Format()函数格式化输出:Me.目标结果控件名 = Format(calculatedTime, "HH:MM") - 若
Me.nM03EI的NULL是合法未录入状态,可先做判断提示:If IsNull(Me.nM03EI) Then Me.目标结果控件名 = "请先录入预期开始时间" Exit Sub End If
内容的提问来源于stack exchange,提问作者n00dnutt
相关产品推荐
相关产品推荐

