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

时间:2015-03-13 10:06:59

标签: excel vba excel-vba

我使用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 个答案:

答案 0 :(得分: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