为何文本框值为Null时调用Len和Dir会触发错误13类型不匹配
VBA 错误代码13(类型不匹配)问题修复
错误触发的核心逻辑:
Dir函数不支持Null作为入参,当Me.ImageURL取值为Null时,直接调用Dir(Me.ImageURL)会直接抛出类型不匹配错误- VBA 中的
And运算符不支持短路求值,即所有并列条件都会被完整执行。你修改后的代码将Dir调用放在判断逻辑前,空值校验的判断无法提前拦截错误,因此问题没有解决
修复方案:
先做空值转换拦截,再执行文件存在性判断,参考实现如下:
Dim imgPath As String ' 统一将Null转换为空字符串 imgPath = Nz(Me.ImageURL, "") ' 路径非空时才执行后续校验 If imgPath <> "" Then If Len(Dir(imgPath)) > 0 Then Application.FollowHyperlink imgPath End If End If
如果希望简化判断逻辑,也可以直接对入参做空值转换后再传入Dir:
If Nz(Me.ImageURL, "") <> "" And Len(Dir(Nz(Me.ImageURL, ""))) > 0 Then Application.FollowHyperlink Me.ImageURL End If
内容的提问来源于stack exchange,提问作者Shadyjunior
相关产品推荐
相关产品推荐

