Метод 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 возвращают очищаемые свойства ячеек к значениям по умолчанию. К таким, как на вновь созданном стандартном рабочем листе. При любых методах очистки высота строк и ширина столбцов не изменяются.
Фразы для контекстного поиска: очистка ячеек, очистка ячейки, очистка формул, очистка от формул, удаление формул, очистка значений, удаление значений, очистка форматов, удаление форматирования, удаление форматов.
Спасибо!
Здравствуйте!
Есть такая проблема:
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 автоматом делает с маленькой.
Добрый день, Григорий!
Ваша строка с исправлениями:
Прошу прошения.
Thisbook — это опечатка. Разумеется, в моем коде написано ThisWorkbook. Просто пишу вопрос с телефона, поэтому не скопировал, а автозамена меня подставила.
Но проблему я решил. Надеюсь это решение когда-нибудь еще поможет кому-то. Может быть даже вставить в шапку как особенность работы метода очистки.
Решение:
Вполне логично, ведь для корректной работы кода в vba все надо указывать эксплицитно. Следовательно разбор моей проблемы можно сформулировать следующим образом: для корректного составления диапазона (Range), мне нужно два адреса (Address) от конкретных ячеек (Cells). А потом уже этот диапазон нужно очистить.
Спасибо Вам за данный сайт, очень много полезного тут усвоил. Ещё и поддерживаете пользователей в комментариях! Всех благ!
Здравствуйте. В упор не вижу ошибки. Нужно на не рабочем листе очистить диапазон:
так работает:
Sheets("Литье").Range("A2", "B2").ClearContents
Но не устраивает тк нужно очистить последние строкиА так нет:
Sheets("Литье").Range(Cells(iRow-n, 1), Cells(iRow-n, 13)).ClearContents
ошибка рантайм 1004 Тоже самое только не в явном виде и тупит, зараза… По одной ячейке не в явном виде работает, но это изврат уже.. Подскажите, где косяк?Здравствуйте, Виктор!
Проверьте, не бывает ли ситуаций, когда
iRow-n
возвращает значение меньше 1, что может вызвать ошибкуRun-time error '1004'
из-за выхода индекса строки за пределы рабочего листа. Подвисать VBA может при запуске тестируемой процедуры из редактора VBA — используйте для запуска кнопку на рабочем листе.Обсуждение закрыто.