Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

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 — используйте для запуска кнопку на рабочем листе.

    Обсуждение закрыто.