我一直在尝试从我的代码中删除.Select,因为我最近发现它并不是一种有效的方法,但我无法让这段代码工作。
我粘贴的数据来自另一个程序,因此它在剪贴板上
我当前的代码(有效):
Range("A3:A3").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
我一直试图以两种方式修复它,但两者都有错误。 选项1:
Worksheets("Orders").Range("A3").PasteSpecial _
Format:="Text", Link:=False, DisplayasIcon:=False
选项2:
Dim ws As Worksheet
Set ps = Sheets("Orders")
With ps.Range("A3")
.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
End With
两者都给出了“应用程序定义或对象定义的错误”,所以我做错了什么,我只是无法弄清楚错误的部分在哪里。
答案 0 :(得分:1)
根据评论更新
当您直接从剪贴板粘贴而不是从其他范围粘贴时,您需要Worksheet.PasteSpecial
版本,而不是Range.PasteSpecial
。
Sub PasteFromClipboard()
'
'code which loads clipboard
'
With Worksheets("Orders")
.Activate 'activate the worksheet so that you can select a range on this sheet
.Range("A3").Select
.PasteSpecial Format:="Text", Link:=False, DisplayasIcon:=False
End With
End Sub
答案 1 :(得分:1)
试试这个
Dim Ws As Worksheet
Set Ws = Sheets("Orders")
Ws.Range("A3").PasteSpecial xlPasteAll
答案 2 :(得分:0)
尝试声明您的工作簿:
Dim wb As Workbook
Set wb = ThisWorkbook
并在您的工作表之后:
Dim ws As Worksheet
Set ws = wb.Sheets("Orders")
和过去:
ws.Range("a3").PasteSpecial xlValues
答案 3 :(得分:0)
对于第一个选项,您忘记了 ""
这应该有效:
Worksheets("Orders").Range("A3").PasteSpecial _
Format:="Text", Link:=False, DisplayasIcon:=False
对于第二个选项,在 ws 中更改 ps ,正如JC Guidicelli所说。