excel - Paste Run Time Error 1004 -
i trying copy set of filtered data 1 sheet bottom of sheet. , code works great except first time upon opening file a:
run time error 1004
if quit debugger , re-run macro works great.
here code: noted problem occurs.
sub movedata_click() 'select filtered alarm data , paste on master spreadsheet sheets("dailygen").select activesheet.usedrange.offset(5, 0).specialcells _ (xlcelltypevisible).copy sheets("2015 master").select if activeworkbook.activesheet.filtermode _ or activeworkbook.activesheet.autofiltermode activeworkbook.activesheet.showalldata end if range("c4").select selection.end(xldown).select activecell.offset(1, -2).range("a1").select activesheet.paste '~~> errors 'sort newest oldest in date column activeworkbook.worksheets("2015 master").listobjects("table44").sort.sortfields.clear activeworkbook.worksheets("2015 master").listobjects("table44").sort.sortfields.add _ key:=range("table44[[#all],[active time]]"), _ sorton:=xlsortonvalues, order:=xldescending, dataoption:=xlsortnormal activeworkbook.worksheets("2015 master").listobjects("table44").sort .header = xlyes .matchcase = false .orientation = xltoptobottom .sortmethod = xlpinyin .apply end end sub
when showalldata (same data->clear in filter section) emptying clipboard , telling excel forget copied range. outside of vba confirm if want. excel loves empty clipboard when edit cell or of other selecting.
to fix, copy after showalldata. in case, have select worksheet , forth.
you should work avoid using select , activate vba. see post details.
here final code changes made:
sub movedata_click() 'select filtered alarm data , paste on master spreadsheet sheets("2015 master").select if activeworkbook.activesheet.filtermode or activeworkbook.activesheet.autofiltermode activeworkbook.activesheet.showalldata end if sheets("dailygen").select activesheet.usedrange.offset(5, 0).specialcells _ (xlcelltypevisible).copy sheets("2015 master").select range("c4").select selection.end(xldown).select activecell.offset(1, -2).range("a1").select activesheet.paste 'sort newest oldest in date column activeworkbook.worksheets("2015 master").listobjects("table44").sort.sortfields.clear activeworkbook.worksheets("2015 master").listobjects("table44").sort.sortfields.add _ key:=range("table44[[#all],[active time]]"), sorton:=xlsortonvalues, order _ :=xldescending, dataoption:=xlsortnormal activeworkbook.worksheets("2015 master").listobjects("table44").sort .header = xlyes .matchcase = false .orientation = xltoptobottom .sortmethod = xlpinyin .apply end end sub
Comments
Post a Comment