вторник, 9 февраля 2010 г.

Excel. Разное поведение мануального и макросного удаления столбца

В процессе избавления от очередного «рукоблудия» (обработка кучи однотипных книг с однотипными листами) обнаружилось весьма интересное поведения MS Excel при удаления столбца ручным способом и того же самого удаления макросом.

Каждый лист в каждой книге имеет шапку, в которой ячейки «A1:BC1» и «B2:AJ2» объединены. Нужно удалить столбец «T».

Пробуем сделать это ручками. Мышой выделяем столбце «T», правой клавишей и «Удалить» - успешно. Теперь записываем туже саму операцию, Excel выдает на гора макрос:
Sub Макрос1()
  Columns("T:T").Select
  Selection.Delete Shift:=xlToLeft
End Sub

Исполняем его и… имеем полностью удаленный диапазон ячеек (в листе все похерилось), т.к. первым действием Excel выделил всю книгу (видимо из-за наличия объединенных ячеек), а вторым грохнул выделенные ячейки.

…Спустя какое-то время родилось решение:

  1. убрать объединение указанных выше ячеек;
  2. удалить «проблемный» столбец;
  3. восстановить объединение (с учетом того, что количество столбцов уменьшилось).

Макрос:
Sub Макрос1()
  ' Разъединить первый диапазон
  Range("A1:BC1").Select
  Selection.UnMerge

  ' Разъединить второй диапазон
  Range("B2:AJ2").Select
  Selection.UnMerge

  ' Удалить столбец
  Columns("T:T").Select
  Selection.Delete Shift:=xlToLeft

  ' вернуть объединение двух диапазонов
  Range("A1:BB1").Select
  Selection.Merge
  Range("B2:AI2").Select
  Selection.Merge
End Sub

Комментариев нет:

Отправить комментарий