Я работаю над макросом, который обновит таблицу Excel из другой информации о листе. Но при обновлении я хочу переместить два столбца на передний план, потому что я не хочу, чтобы они менялись. Все работает до такой степени, что я перемещаю два столбца спереди. Я выбираю их, вырезаю их и вставляю, но по какой-то причине сразу после того, как паста происходит, он выдает ошибку, заявив, что вставка не удалась (ошибка 1004-PasteSpecial метода класса Range не удалась). Я очень смущен, почему это происходит, и любая помощь будет очень признательна.Excel update macro
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
это уже ответил в другой один из ваших постов. Вернитесь назад и посмотрите на него. Когда вы делаете .activate, вы теряете свой выбор/буфер обмена. – Sorceri
Так что я просто удаляю .activate? –
После строки .Insert добавьте строку, подобную этой: .Columns («A: B»). Копировать Это должно исправить вашу проблему. См. Ответы на этот вопрос (один из ваших): http://stackoverflow.com/questions/26065376/vba-copy-and-paste-macro – Daniel