Excel更新宏

时间:2014-09-29 16:34:39

标签: excel vba excel-vba

我正在开发一个宏,它将从另一个工作表信息中更新excel电子表格。但是,在更新时我想将两列移到前面,因为我不想让它们改变。一切都达到了我将两列移到前面的程度。我选择它们,剪切它们并粘贴它们但是由于某种原因,在粘贴发生后它会抛出一个错误,说粘贴失败了(错误1004-Range类的PasteSpecial方法失败)。我很困惑为什么会发生这种情况,我们将非常感谢任何帮助。

Sub crossUpdate()

Dim rng1 As Range, rng2 As Range, rng1Row As Range, rng2Row As Range, Key As Range, match As Integer
Dim wb1 As Workbook
Dim wb2 As Workbook

Set wb1 = Workbooks("011 High Level Task List v2.xlsm")
Set wb2 = Workbooks("011 High Level Task List v2 ESI.xlsm")

'Unfilter and Unhide both sheets
With wb1.Sheets("Development Priority List")
.Cells.EntireColumn.Hidden = False
.Cells.EntireRow.Hidden = False
.AutoFilterMode = False
End With
With wb2.Sheets("Development Priority List")
.Cells.EntireColumn.Hidden = False
.Cells.EntireRow.Hidden = False
.AutoFilterMode = False
End With

'Copy and paste original sheet to new temp sheet
wb1.Sheets("Development Priority List").Activate
wb1.Sheets("Development Priority List").Cells.Select
Selection.Copy
Sheets.Add.Name = "SourceData"
wb1.Sheets("SourceData").Paste

'Sort temp sheet by key
N = Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = wb1.Sheets("SourceData").Cells.Range("A2:A" & N)
Set rng1Row = rng1.EntireRow
rng1Row.Sort Key1:=Sheets("SourceData").Range("A1")

'Update sheet sorted by key
N = Cells(Rows.Count, "A").End(xlUp).Row
Set rng2 = wb2.Sheets("Development Priority List").Cells.Range("A2:A" & N)
Set rng2Row = rng2.EntireRow
rng2Row.Sort Key1:=wb2.Sheets("Development Priority List").Range("A1")

'Dev columns moved on update sheet
 With wb2.Sheets("Development Priority List")
.Columns("F:G").Cut
.Columns("A:B").Insert Shift:=xlToRight
.Activate
.Columns("A:B").Select
End With
Selection.PasteSpecial       <------ Line that throws error
End Sub

1 个答案:

答案 0 :(得分:0)

更改您的代码块:

 With wb2.Sheets("Development Priority List")
    .Columns("A:B").Insert Shift:=xlToRight
    .Columns("H:I").Cut
    .Range("A1").PasteSpecial
End With