首页 文章

Excel VBA:FOR ...出错时转到NEXT

提问于
浏览
1

我使用For ... Next循环将图片插入Excel工作表 . 图片的名称来自B列 . 有时,硬盘上没有相应的图片 . 在这种情况下,Excel将抛出错误消息并停止运行代码 . 首先,我尝试了“On Error Resume Next” . 这不好,因为执行错误发生后的所有代码 . 所以,我尝试了以下代码,以避免在找不到图片时运行代码 . 但是,这只会捕获第一个错误 . 当第二次找不到图片时,Excel仍会抛出错误消息(“无法获取图片类的插入属性”) . 我想要的只是如果发生错误,Excel将跳过其余代码并转到下一个案例 . 如何才能做到这一点?谢谢你的帮助 .

......
On Error GoTo gotoNext
For Each cell In rng
......
Set p = Workbooks(ActiveSheet.Parent.Name).Sheets(Sheet_to_Insert_Picture).Pictures.Insert(Path_Prefix & "\" & _
Replace(cell.Value, "/", "-") & ".jpg") 'when the picture is not found, Excel throws an error
......
gotoNext:
Err.Clear
Next

1 回答

  • 1

    您可以使用 Dir 命令快速检查图像文件是否存在 . 如果找到,它将返回文件的名称(因此返回的字符串长度大于零) .

    For Each cell In rng
      if cbool(len(dir(Path_Prefix & "\" & Replace(cell.Value, "/", "-") & ".jpg"))) then
        Set p = Workbooks(ActiveSheet.Parent.Name).Sheets(Sheet_to_Insert_Picture).Pictures.Insert(Path_Prefix & "\" & Replace(cell.Value, "/", "-") & ".jpg")
      end if
    next cell
    

相关问题