如何在出现错误 1004 时添加消息框

And*_*rew 2 excel vba

我想通过在以下情况下添加 MsgBox 来改进整个代码:

运行时错误“1004”:Range 类的 PasteSpecial 方法失败。

如果剪贴板为空并且我运行宏,则会导致此错误。任何建议?

Sub Test()
On Err.Number = 1004 GoTo ErrMsg
Dim Val As Variant
Sheets("Sheet 3").Select
Val = Range("A2").Value
Sheets("Sheet 1").Select
Call TextFromClipboard
Range("AY" & Val).Select
ActiveSheet.Paste
Sheets("Sheet 3").Select
ErrMsg:
MsgBox "Nothing to paste!", vbCritical, "Clipboard is empty!"
End Sub
Run Code Online (Sandbox Code Playgroud)

原点

Sco*_*man 7

我总是发现如果可以捕获错误,最好真正捕获它,而不是依赖 GoTo。

根据此答案,您可以创建一个函数来查看剪贴板是否为空。

Function clipboardEmpty() as Boolean
'requires reference to Microsoft Forms 2.0 Object Library

    Dim myDataObject As DataObject
    Set myDataObject = New DataObject

    myDataObject.GetFromClipboard

    clipboardEmpty = Not myDataObject.GetFormat(1) = True 

End Sub
Run Code Online (Sandbox Code Playgroud)

然后,您可以将程序更新为:

If clipboardEmpty Then
    Msgbox "No Data to Paste!"
Else
   'Do Stuff
End If
Run Code Online (Sandbox Code Playgroud)