加载产品图片时出现File not found错误,替代图无法正常显示
解决VBA点击产品名称时替代图无法正常显示的问题
问题根源
原代码存在两个核心问题:
- 判断条件错误:
If strFile = ""永远不会触发,因为strFile是拼接生成的路径字符串,即便对应图片不存在,路径本身也不为空。 - 未检查文件实际存在性:直接调用
LoadPicture()加载不存在的文件,会抛出「File not found」错误。
修正后的代码
Private Sub ListBox1_Click() Dim ProductName As String Dim iPath As String Dim iPathNA As String ProductName = Me.ListBox1.List(Me.ListBox1.ListIndex, 1) iPath = ThisWorkbook.Path & "\Item Images\" & ProductName & ".JPG" iPathNA = ThisWorkbook.Path & "\Item Images\NA.jpg" ' 先检查产品图片是否存在 If Dir(iPath) <> "" Then Image2.Picture = LoadPicture(iPath) Else ' 检查替代图是否存在,避免替代图也找不到的情况 If Dir(iPathNA) <> "" Then Image2.Picture = LoadPicture(iPathNA) Else ' 可选:如果替代图也不存在,清空图片或给出提示 Image2.Picture = LoadPicture("") MsgBox "替代图片NA.jpg未找到,请检查路径" End If End If End Sub
关键修改说明
- 使用
Dir()函数判断文件是否存在:Dir(文件路径)返回空字符串表示文件不存在,反之则存在。 - 调整逻辑顺序:优先加载产品图,不存在时再加载替代图,同时增加对替代图本身的存在性检查,避免替代图丢失时再次报错。
- 新增兜底处理:如果替代图也找不到,清空图片并弹出提示,提升容错性。
内容的提问来源于stack exchange,提问作者Khola
相关产品推荐
相关产品推荐

