我很抱歉,因为这里有很多次讨论。我有以下问题。此宏应从剪贴板粘贴到单元格(1,1)。如果剪贴板中没有数据,我希望它显示带有测试“无需粘贴”的msgbox。
这一点是错误的,它将输入单元格(1,1)文本:“MsgBox”无需粘贴“”而不是显示消息。
你可以帮我纠正错误吗?非常感谢提前!!!Sub Paste()
Cells(1, 1).PasteSpecial
If Err Then
MsgBox "Nothing to paste"
End If
End Sub
答案 0 :(得分:0)
粘贴文本后尝试清除剪贴板,以便下次运行时不会包含刚粘贴的相同文本。
Sub Paste()
On Error Resume Next
Cells(1, 1).PasteSpecial
'Clear clipboard
Application.CutCopyMode = False
If Err Then
MsgBox "Nothing to paste!"
Err.Clear
End If
End Sub
以下是更直接使用MS剪贴板的另一种方法。首先,您需要在vba项目中添加对 Microsoft Forms 2.0对象库的引用。
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Sub Paste()
Dim DataObj As New MSForms.DataObject
DataObj.GetFromClipboard
On Error GoTo ErrorHandler
ActiveSheet.Cells(1, 1).Value = DataObj.GetText
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
Exit Sub
ErrorHandler:
MsgBox "Nothing to paste!"
End Sub
答案 1 :(得分:0)
Sub Paste()
On Error Resume Next
Cells(1, 1).PasteSpecial
'Clear clipboard
Application.CutCopyMode = False
If Err Then
MsgBox "Nothing to paste!"
Err.clear
End If
End Sub
现在它工作得很好,我已经改变了.Paste to .PasteSpecial