No, ak si nemyslíš, že nasledujúci kód je kapánek jednoduchší (vďaka tomu, že nič nevyberám špeciálne, neprilepujem hodnoty a formáty... atď atď, akurát v cieli potom vyrazím stĺpce, čo nepotrebujem), tak neviem...
P.S. dokonca týmto postupom som nemusel ani dočasne odomykať a zamykať zdroj...
Celý, celučičký Tvoj kód je nahradený týmito riadkami:
Sub Makro1()
Sheets("Hárok1").Range("A1:K" & Sheets("Hárok1").Range("A1").End(xlDown).Row).Copy (Sheets("Hárok2").Range("A1"))
Sheets("Hárok2").Range("B:D,F:F,I:I").Delete Shift:=xlToLeft
End Sub
Samozrejme si musíš dosadiť svoje názvy hárkov zdroja a cieľa, rozsah stĺpcov kopírovanej oblasti (v príklade A až K) a nastaviť stĺpce, ktoré vyhadzuješ (v príklade stĺpce B až D plus stĺpce F a I)...Posledný riadok zdroja sa odvádza zo stĺpca A (ak nevyhovuje, existuje x spôsobov ako poňať celé aktuálne pole...)
Žiadne Select-y, všetko sa udeje bez nich, akurát keď sa po vykonaní chceš ocitnúť v hárku 2, tak na záver si dáš Sheets("Hárok2").Select
P.S. a bolo by pomohlo hľadať dôvod odmietania poslušnosti makra, keby si bol dal aj ukážku, na ktorom riadku kódu si obdržal onú hlášku. Tých možností je v Tvojom kóde totiž viac.
Ale použitím môjho kódu je hľadanie už bezpredmetné
Ešte ma napadá, že by sa mohlo stať, že uplatnením filtra v inom stĺpci než A, sa v stĺpci A môžu vyskytnúť prázdne bunky, čo by spôsobilo výber poľa len po riadok prvej prázdnej bunky stĺpca A. Preto by bolo vhodné posledný riadok odvodzovať od toho stĺpca, v ktorom filtruješ (a nefiltruje sa na prázdny obsah). Z toho vyplýva, že v mojom príklade vymeníš ("A1").End(xlDown) napr na ("E1").End(xlDown), pokiaľ filtruješ v stĺpci E. Ide len o to, že v stĺpci, z ktorého je odvodzovaný počet riadkov, sa nesmie vyskytnúť prázdna bunka.
Ale ako píšem vyššie, dá sa to i označením poľa Aktuálna oblasť alebo z poslednej bunky (celého poľa) a pod... Ak by bol problém, daj vedieť.