Excel формат за зразком для декількох осередків

Є в Excel відмінна функція «Формат за зразком», яка дозволяє копіювати всі наступні осередки по формату виділеної комірки. Напевно, багато хто їй користувалися. І напевно, як і я, користувалися таким чином: виділив осередок, натиснув формат за зразком, виділив осередок, знову натиснув формат за зразком, виділив осередок і так далі. Мені здалося, що проблема цієї функції в тому, що її не можна застосувати відразу на кілька осередків. І тому я написав макрос, який це робить. Вся печаль полягає в тому, що цей макрос виявився не потрібен, так як в Excel такий функціонал є.

Урок, який треба засвоїти на майбутнє, полягає в тому, що не треба винаходити черговий велосипед, а варто лише до існуючого прочитати довідку. Досить було просто навести на відповідну кнопку мишкою і у спливаючому повідомленні дочитати до кінця

Excel формат за зразком для декількох осередків

Потрібно просто двічі натиснути на кнопку, і можна скопіювати формат на кілька осередків поспіль.

Мій макрос працює по іншій ідеології. Потрібно спочатку виділити осередки (можна роздільні виділення через ctrl)

Excel формат за зразком для декількох осередків

Запускаємо макрос, він запитає осередок або діапазон комірок, формат яких потрібно скопіювати

Excel формат за зразком для декількох осередків

Після роботи бачимо, що виділені осередки взяли потрібний формат

Excel формат за зразком для декількох осередків

Загалом, нічого складного. Можна сказати навіть, що макрос в одну строчку через метод PasteSpecial. АЛЕ хто пише макроси в excel, ті знають, що після роботи макросу відсутня можливість відкотити результат. Якщо при будь-якій дії Excel ви можете натиснути стрілочку назад або ctrl + Z, то після макросу всі спроби будуть марними. А при використанні копіювання формату обов'язково якісь осередки випадково зачепиш або не в той формат переведеш, в загальному, скасування дій треба обов'язково зробити.

Прочитавши статтю Як скасувати дії макросу. стало зрозуміло, що треба все робити самому в частині відновлення даних. Я пішов по першому шляху (збереженні властивостей комірки), все таки робити копію листа це круто, але стежити в файлі копіями листів без 100% можливості потім за собою прибрати якось недобре.

Мудрувати особливо не став, і просто зберіг властивості осередків (рамки, шрифт, параметри тексту в комірці). Після роботи макросу можна відкотити все назад

Excel формат за зразком для декількох осередків

і результат не змусить себе чекати

Excel формат за зразком для декількох осередків

Є, звичайно, проблемка, описана в оригінальній статті. Якщо виділяється, припустимо, цілий рядок або стовпчик, то збереження властивостей призводить до притормозитися, а відміна дій посилає Excel в хороший нокдаун. Тому в макросі для виділених осередків, кількість яких більше 100, відключається скасування дій. Тобто макрос працює, але потім результат не повернеш. Хороша новина: краще рядки і колонки копіювати через стандартну команду «Формат за зразком», так як потім доступна скасування дій і Excel все це робить за секунди.

Єдиний косяк в роботі стандартної функції копіювання формату: при об'єднаний осередках в особливих випадках excel пише таке повідомлення

Excel формат за зразком для декількох осередків

Тобто, коли ви намагаєтеся скопіювати формат в рядок з об'єднаними осередками, вам потрібно обов'язково виділити повністю всю осередок, іноді відразу це неможливо або важко зробити. Але ось мій макрос спокійно застосовує формат (насильно), прибираючи при цьому об'єднані осередки

Excel формат за зразком для декількох осередків

Поділитися з друзями: