bsa*_*aka 5 excel vba excel-vba
基本上我有这个子图片插入我的工作表:
ActiveCell.Select
Dim picname As String
picname = ActiveCell.Value
ActiveCell.Offset(-1, 0).Select
Dim picture
Set picture = ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\Images\" & picname & ".jpg")
Run Code Online (Sandbox Code Playgroud)
我在循环中使用Application.Run运行此子.如果路径文件夹中没有图片,我得到"运行时错误1004:无法获取Picture类的Insert属性",循环停止.如何绕过错误以便循环可以继续?
Flo*_*ris 23
该On Error结构存在这种事情.它有各种选项:
On Error Goto label
Run Code Online (Sandbox Code Playgroud)
一旦您的代码遇到此语句,它将label:在发生错误时跳转到.如果你需要做一些错误处理是很有用的 - 特别是如果有多个地方出现问题,但它们总是导致相同的"需要修复某些事情".您可以使用Err.Number或Err.Description查找导致错误的原因.
On Error Resume Next
Run Code Online (Sandbox Code Playgroud)
当你有一行可能导致错误时很有用 - 但是如果它确实你想忽略并继续前进.这很可能是正确的做法.
别忘了放
On Error Goto 0
Run Code Online (Sandbox Code Playgroud)
在您通过"危险"之后,否则您的代码将(在您发出初始命令的范围内)继续忽略错误.危险,那.
所以你的代码将被修改为
On Error Resume Next
Set picture = ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\Images\" & picname & ".jpg")
On Error GoTo 0
Run Code Online (Sandbox Code Playgroud)
如何绕过错误以便循环可以继续?
如果您没有其他选项或者您预计会出现错误并且仍希望继续,则需要在此类情况下进行错误处理.在您的情况下,只需使用DIR命令检查文件是否存在,然后只插入图片.例如.
If Dir(ThisWorkbook.Path & "\Images\" & picname & ".jpg") <> "" Then
'
'~~> Your code to insert a picture
'
End If
Run Code Online (Sandbox Code Playgroud)
这个问题
On Error Resume Next
Set picture = ActiveSheet.Pictures.Insert....
On Error GoTo 0
Run Code Online (Sandbox Code Playgroud)
是在代码的后半部分,你将不得不添加另一行
If Not picture = Nothing then
Run Code Online (Sandbox Code Playgroud)
以防您与该对象进行交互.在这种DIR情况下,所有相关代码都夹在中间IF/EndIF,您不需要额外的检查.
| 归档时间: |
|
| 查看次数: |
57612 次 |
| 最近记录: |