VBA在从代码中删除.select时遇到麻烦

时间:2018-06-06 07:48:20

标签: excel vba excel-vba

我一直在尝试从我的代码中删除.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

两者都给出了“应用程序定义或对象定义的错误”,所以我做错了什么,我只是无法弄清楚错误的部分在哪里。

4 个答案:

答案 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所说。