VBA Excel. Range.Clear и другие методы очистки ячеек

    Метод Range.Clear для полной очистки диапазона ячеек из кода VBA Excel. Методы очистки отдельных свойств и их групп в ячейках. Примеры использования.

    Методы очистки ячеек

    Метод Очищаемые свойства Примечание
    Range.Clear Почти все свойства Ширина и высота ячеек не изменяются
    Range.ClearComments Комментарии Для Excel в составе Office 365
    Range.ClearContents Формулы и значения Исходное форматирование сохраняется
    Range.ClearFormats Свойства, задающие форматы В том числе отмена объединения ячеек
    Range.ClearHyperlinks Гиперссылки Текст и форматирование сохраняются
    Range.ClearNotes Примечания и заметки Примечания – для локальных программ Excel, заметки – для Excel в составе Office 365
    Range.ClearOutline Структура данных Смотрите, что такое структурирование данных

    Range – выражение, возвращающее диапазон ячеек.

    Примеры использования

    1. Удаление гиперссылки из ячейки A1
    Cells(1, 1).ClearHyperlinks

    2. Очистка диапазона A1:L50 от формул и значений
    Range("A1:L50").ClearContents

    3. Очистка всех свойств ячеек в столбцах A:K
    Columns("A:K").Clear

    4. Очистка форматирования ячеек в строках 1:20
    Rows("1:20").ClearFormats

    Методы очистки диапазонов ячеек в VBA Excel возвращают очищаемые свойства ячеек к значениям по умолчанию. К таким, как на вновь созданном стандартном рабочем листе. При любых методах очистки высота строк и ширина столбцов не изменяются.

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    6 комментариев для “VBA Excel. Range.Clear и другие методы очистки ячеек”

    1. Григорий

      Здравствуйте!
      Есть такая проблема:
      1. В отдельном модуле написана процедура, которая при запуске и вводе в inputbox данных генерирует таблицу с данными. Вот перед каждой генерацией сделал так, чтобы содержимое листа , кроме первой строки (шапки), очищалось: Thisbooks.Worksheets("Лист3").Range("A2",Cells(lastRow, lastColumn).clear

      2. На первом листе у меня как бы меню управления. Там кнопка, к которой привязана эта процедура. При запуске выполнение процедуры доходит до строки с очисткой и уходит в ошибку 1004 run time error: Application-defined or object-defined error.

      При этом, если эту же процедуру запускать с кнопки, или через F5, но с открытого Лист3 — все отлично выполняется!

      Никак не могу додуматься в чем же проблема. Подскажите пожалуйста!

      P.S. В строке с кодом .clear действительно с маленькой буквы. Почему то с большой не пишется, vba автоматом делает с маленькой.

      1. Евгений

        Добрый день, Григорий!
        Ваша строка с исправлениями:

        1. Григорий

          Прошу прошения.
          Thisbook — это опечатка. Разумеется, в моем коде написано ThisWorkbook. Просто пишу вопрос с телефона, поэтому не скопировал, а автозамена меня подставила.

          Но проблему я решил. Надеюсь это решение когда-нибудь еще поможет кому-то. Может быть даже вставить в шапку как особенность работы метода очистки.

          Решение:

          Вполне логично, ведь для корректной работы кода в vba все надо указывать эксплицитно. Следовательно разбор моей проблемы можно сформулировать следующим образом: для корректного составления диапазона (Range), мне нужно два адреса (Address) от конкретных ячеек (Cells). А потом уже этот диапазон нужно очистить.

          Спасибо Вам за данный сайт, очень много полезного тут усвоил. Ещё и поддерживаете пользователей в комментариях! Всех благ!

    2. Здравствуйте. В упор не вижу ошибки. Нужно на не рабочем листе очистить диапазон:
      так работает: Sheets("Литье").Range("A2", "B2").ClearContents Но не устраивает тк нужно очистить последние строки
      А так нет: Sheets("Литье").Range(Cells(iRow-n, 1), Cells(iRow-n, 13)).ClearContents ошибка рантайм 1004 Тоже самое только не в явном виде и тупит, зараза… По одной ячейке не в явном виде работает, но это изврат уже.. Подскажите, где косяк?

      1. Евгений

        Здравствуйте, Виктор!
        Проверьте, не бывает ли ситуаций, когда iRow-n возвращает значение меньше 1, что может вызвать ошибку Run-time error '1004' из-за выхода индекса строки за пределы рабочего листа. Подвисать VBA может при запуске тестируемой процедуры из редактора VBA — используйте для запуска кнопку на рабочем листе.

    Добавить комментарий

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.