Макрос для очистки листа excel

Иногда есть необходимость перед какими-то действиями сначала очистить лист Excel от всех данных, которые на нем есть, чтобы заполнить его новыми данными. Я предлагаю 3 варианта как можно очистить лист.

Способ 1

Очистка всех ячеек на листе

' Очистка всех ячеек от данных, а так же оформления ячеек (шрифт, фон и т.п.)
Sheets("Лист1").Cells.Clear

Либо, если нужно очистить только данные на листе Excel, не затрагивая формат ячеек, можно сделать так:

' Очистка всех ячеек только от данных
Sheets("Лист1").Cells.ClearContents

Способ 2

Чтобы очистить все данные и при этом определение последней строки SpecialCells(xlCellTypeLastCell) работало правильно, можно воспользоваться таким вариантом:

Sheets("Лист1").Cells.Delete Shift:=xlUp
ThisWorkbook.Saved = True

Способ 3

Если лист содержит очень преочень много данных, тогда чтобы очистить лист Excel самым быстрым способом будет удалить его и создать заново.

' Отключаем предупреждение об удалении данных на листе
Application.DisplayAlerts = False
' Удаляем лист
Sheets("Лист1").Delete
' Включаем предупреждения обратно
Application.DisplayAlerts = True
' Добавляем лист
Set Sheet = Sheets.Add
' Переименовываем как он назывался перед удалением
Sheet.Name = "Лист1"

Предложенных 3 вариантов удаления всех данных на листе Excel я думаю будет достаточно для решения повседневных задач на VBA.

Эта статья покажет вам, как быстро очистить содержимое с форматированием ячеек всего листа или указанного диапазона или без него с помощью кода VBA в Excel.

Очистить весь лист с кодом VBA в Excel
Очистить указанный диапазон с кодом VBA в Excel


Очистить весь лист с кодом VBA в Excel

Приведенные ниже коды VBA помогут вам очистить весь лист с форматированием ячеек или без него.

1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, а затем скопируйте ниже код VBA в модуль.

Если вы просто хотите очистить содержимое ячейки, но сохранить форматирование, попробуйте этот код.

Код VBA: очистить весь лист без форматирования ячеек

Sub sbClearEntireSheetOnlyData()
Sheets("Sheet4").Cells.ClearContents
End Sub

Если вы хотите очистить и содержимое, и форматирование ячеек, этот код может вам помочь.

Код VBA: очистить весь лист с форматированием ячеек

Sub sbClearEntireSheet()
Sheets("Sheet4").Cells.Clear
End Sub

Внимание: В коде Sheet4 — это имя рабочего листа, с которого вы очистите содержимое. Пожалуйста, измените его по своему усмотрению.

3. нажмите F5 или нажмите кнопку «Выполнить», чтобы запустить код.

Затем указанный рабочий лист с форматированием ячеек или без него немедленно очищается.


Очистить указанный диапазон с кодом VBA в Excel

Для очистки только указанного диапазона на листе вы можете попробовать следующий код VBA.

1. Откройте рабочий лист, из которого вы очистите указанный диапазон, затем нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, а затем скопируйте ниже код VBA в модуль.

Очистить диапазон, но сохранить форматирование, попробуйте этот код.

Код VBA: очистить указанный диапазон без форматирования ячеек

Sub sbClearCellsOnlyData()
Range("A1:C10").ClearContents
End Sub

Очистить диапазон с форматированием ячеек, используйте этот код:

Код VBA: очистить указанный диапазон с форматированием ячеек

Sub sbClearCells()
Range("A1:C10").Clear
End Sub

Внимание: A1: C10 — это диапазон, который вы очистите на листе.

3. нажмите F5 ключ или щелкните Run кнопку, чтобы очистить диапазон.


Статьи по теме:

  • Как очистить ограниченные значения в ячейках в Excel?
  • Как очистить кеш фильтра (старые элементы) из сводной таблицы в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (0)


Оценок пока нет. Оцените первым!

Home / VBA / How to CLEAR an Entire Sheet using VBA in Excel

To clear an entire sheet using a VBA code in one go, you need to use two things, first is the CLEAR method, and then CELLS to refer to all the cells of a worksheet.

Clear the Activesheet

Let’s say if you want to clear all the content from the activate sheet, the code would be like the below.

Cells.Clear

When you run this code, it will clear everything from all the cells from the active sheet, as I have already mentioned that we have used clear to refer to the entire worksheet and clear to clear it.

Clear a Specific Sheet

There’s one thing that you need to note down that to clear a sheet that sheet needs to be activated. So let’s say you want to clear the “Sheet1”, the code would be like:

Sheets("Sheet1").Activate
Cells.Clear

In this code, the first activates the “Sheet1” and the second line clears everything.

Helpful Links: Run a Macro – Macro Recorder – Visual Basic Editor – Personal Macro Workbook

Other Things to Clear

You can also use the below methods to clear different things.

Cells.ClearContents 'to clear contents
Cells.ClearComments 'to clear Comments
Cells.ClearFormats 'to clears formatting
Cells.ClearHyperlinks 'to clear hyperlinks
Cells.ClearNotes 'to clear notes
Cells.ClearOutline 'to clears outline

Clear a Sheet from a Specific Workbook

The below code can refer to the workbook “Book1” and clear the sheet “Sheet1”. But make sure to have the workbook open at the time run this code.

Workbooks("Book1").Sheets("Sheet1").Activate
Cells.Clear

This code first activates the “Sheet1” from the book and clears it.

Clear a Sheet from a Workbook that is Closed

And in the below code, we have referred to the “Sheet1” from the workbook “sample-file”, stored in a specific location.

Sub vba_clear_sheet()

Dim wb As Workbook

Application.ScreenUpdating = False

Set wb = Workbooks.Open("C:UsersDellDesktopsample-file.xlsx")
wb.Sheets("Sheet1").Activate
Cells.Clear
wb.Close SaveChanges:=True

Application.ScreenUpdating = False

End Sub

More Tutorials on VBA Worksheets

  • Back to VBA Worksheet / VBA Tutorial

макрос очистки листа

regitr

Дата: Среда, 08.01.2014, 15:27 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

использую такой макрос

[vba]

Код

Sub sh1()
Set aRange = Worksheets(«15 äíåé äî îêîí÷àíèÿ»).Range(«A1»).SpecialCells(xlCellTypeLastCell)
lastRow = aRange.Row
lastColumn = aRange.Column
Worksheets(«15 äíåé äî îêîí÷àíèÿ»).Range(Cells(1, 1), Cells(lastRow, lastColumn)).Delete
ThisWorkbook.Save
End Sub

[/vba]

выдает ошибку на строке Worksheets, в чем причина или сам макрос не рабочий

 

Ответить

AndreTM

Дата: Среда, 08.01.2014, 15:43 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

[vba]

Код

Sub sh1()  
     Set aRange = ThisWorkbook.Sheets(«MySheet»).Range(«A1»).SpecialCells(xlCellTypeLastCell)  
     lastRow = aRange.Rows.Count
     lastColumn = aRange.Columns.Count
‘ Удаляем ячейки?
     ThisWorkbook.Sheets(«MySheet»).Range(Cells(1, 1), Cells(lastRow, lastColumn)).Delete  
     ThisWorkbook.Save  
End Sub

[/vba]
Но, вообще-то, достаточно сделать (имхо)
[vba]

Код

ThisWorkbook.Sheets(«MySheet»).Cells.Clear

[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010

 

Ответить

regitr

Дата: Среда, 08.01.2014, 15:56 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

ох :D спасибо работает

 

Ответить

Technically, and from Comintern’s accepted workaround,
I believe you actually want to Delete all the Cells in the Sheet. Which removes Formatting (See footnote for exceptions), etc. as well as the Cells Contents.
I.e. Sheets("Zeroes").Cells.Delete

Combined also with UsedRange, ScreenUpdating and Calculation skipping it should be nearly intantaneous:

Sub DeleteCells ()
    Application.Calculation = XlManual
    Application.ScreenUpdating = False
    Sheets("Zeroes").UsedRange.Delete
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
End Sub

Or if you prefer to respect the Calculation State Excel is currently in:

Sub DeleteCells ()
    Dim SaveCalcState
    SaveCalcState = Application.Calculation
    Application.Calculation = XlManual
    Application.ScreenUpdating = False
    Sheets("Zeroes").UsedRange.Delete
    Application.ScreenUpdating = True
    Application.Calculation = SaveCalcState
End Sub

Footnote: If formatting was applied for an Entire Column, then it is not deleted.
This includes Font Colour, Fill Colour and Borders, the Format Category (like General, Date, Text, Etc.) and perhaps other properties too, but

Conditional formatting IS deleted, as is Entire Row formatting.

(Entire Column formatting is quite useful if you are importing raw data repeatedly to a sheet as it will conform to the Formats originally applied if a simple Paste-Values-Only type import is done.)

Return to VBA Code Examples

In this Article

  • Clear ActiveSheet
    • Clear Everything (Contents, Formats, Comments, etc.)
    • Clear Contents
    • Clear Formats
    • Delete Worksheet UsedRange
  • Clear Sheet (By Name)
  • Clear Worksheet (From Variable)

In VBA it’s fast and easy to clear an entire sheet (or worksheet).

Clear ActiveSheet

Clear Everything (Contents, Formats, Comments, etc.)

This will clear the Activesheet’s cells of all cell properties: contents, formats, comments, etc:

Cells.Clear

Clear Contents

Instead, you can clear ONLY the cell contents:

Cells.ClearContents

Clear Formats

or only the Cell Formats:

Cells.ClearFormats

By typing: Cells.Clear into the VBA Editor you can see the list of Clear methods available to you:

vba clear entire sheet

Delete Worksheet UsedRange

You can also delete the entire worksheet’s UsedRange. This can also delete objects (shapes, charts, textboxes).

ActiveSheet.UsedRange.Delete

Clear Sheet (By Name)

To clear a specific sheet use the following code where “Sheet1” is the name of the sheet to clear:

Sheets("Sheet1").Cells.Clear

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

automacro

Learn More

Clear Worksheet (From Variable)

To clear a sheet defined by an object variable use the following code:

dim ws as worksheet

Set ws = Sheets("Sheet1")

ws.Cells.Clear
 

xLeNiNx

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

#1

13.08.2015 12:00:31

Здравствуйте только начал учить VBA помогите убрать ошибку в макросе! Суть проблемы в том что в Книге есть много листов и каждый месяц их нужно чистить от дат, чисел, текста, но есть и листы которие могут быть не заполнении и при их чистки видает ошибку
Ерор 1004 «Не найдено ни одной ячейки, соответствующие зада ному условию» как избавиться от этой проблемы? Вот код макроса:

Код
Sub Очистка()
    Application.ScreenUpdating = False
    If Range("B5:BG1000").SpecialCells(xlCellTypeConstants, xlNumberAsText).Select Then 
        If MsgBox("Точно хотите очистить?", vbYesNo) = vbYes Then
            Selection.ClearContents 
        End If
    Else
        MsgBox "Нет даних!"
    End If
    ActiveSheet.Range("B2").Select 
    Application.ScreenUpdating = True
End Sub

Зарание благодарен!

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#2

13.08.2015 12:11:10

xLeNiNx, здравия. Можно обойтись без селектов.

Код
Sub Очистка()
    Application.ScreenUpdating = False
    On Error Resume Next
    Set Rng = ActiveSheet.Range("B5:BG1000").SpecialCells(xlCellTypeConstants, xlNumberAsText)
    On Error GoTo 0
    If Not IsEmpty(Rng) Then
        If MsgBox("Точно хотите очистить?", vbYesNo) = vbYes Then
            Rng.ClearContents
        End If
    Else
        MsgBox "Нет данных!"
    End If
    ActiveSheet.Range("B2").Select
    Application.ScreenUpdating = True
End Sub

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

xLeNiNx

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

Большое спасибо. Теперь работает как надо! Век живы век учись=)
Так как ток начал познавать VBA не судите строго=)

 

xLeNiNx, я бы вместо Range(«B5:BG1000») написал UsedRange, чтобы обрабатывались только заполненные ячейки.

 

xLeNiNx

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

#5

13.08.2015 13:51:08

Спс можно будет попробовать! Правда с последним кодом возникла проблема! Ошибки он не выдает теперь но если ячейки наполнение то они и не чистятса а выводит что «нет даных» Правда помогли решить эту проблему с помощу этого макроса:

Код
Sub Очистка()
    Dim Rng As Range
    Application.ScreenUpdating = False
    On Error Resume Next
    Set Rng = Range("B5:BG1000").SpecialCells(xlCellTypeConstants, xlNumberAsText) 
    Rng.Select
    If Err Then
        MsgBox "Нет даних!"
    ElseIf Rng Then
        If MsgBox("Дествительно стереть?", vbYesNo) = vbYes Then
            Selection.ClearContents 
        End If
    End If
    Err.Clear
    ActiveSheet.Range("B2").Select 
    Application.ScreenUpdating = True
End Sub

Изменено: xLeNiNx13.08.2015 13:55:40

 

xLeNiNx

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

Теперь хотелось бы усложнить немного задачу так как увидел косяк! Надо исключить из выделения ячейки с текстом «Итого:»
Буду рад услышать мысли=)

П.С. Приложил кусок документа к примеру!

Прикрепленные файлы

  • Копия.xls (81.5 КБ)

Изменено: xLeNiNx13.08.2015 14:07:42

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

xLeNiNx, объясните, пожалуйста, зачем Вы Select используете? (Вам же показали, что и без него можно обойтись)
Позже добавлено.
По поводу итого, запишите его так:
=»Итого:»
И всё. Это формула, а не конст. и макрос его не тронет.

Изменено: JayBhagavan13.08.2015 14:15:12

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

xLeNiNx

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

К сожалению ваш метод выдавал ошибки и так как я новичок в этом деле пришлось ввернутся к старому! А с прогрессом бы исправил это=)
А за итого спс ! Пожже поясню для чего оно нужно=)

Изменено: xLeNiNx13.08.2015 14:20:11

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#9

13.08.2015 14:21:30

Цитата
xLeNiNx написал: ваш метод выдавал ошибки

На моём файле не выдавал. Покажите файл, на котором мой макрос выдавал ошибки.
За итого пожалуйста.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

xLeNiNx

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

Файл выложил выше=) Но наперед извиняюсь так его не роба в моей ошибке так как я его неправильно переписал=)

Прикрепленные файлы

  • Копия.xls (89.5 КБ)

Изменено: xLeNiNx13.08.2015 15:03:09

 

xLeNiNx

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

Если допустим Есть пустой лист его тоже нужно скрыть но по своему!
Во 1-х оставить строчку итого! (она для каждого листа разная)
Во 2-х оставить отобранной допустим область с 5 по 16 строчки!
И в 3-х Скрыть область  с 17 по строчку х (где х- строчка перед строчкой итого=)
Зарание благодарен!

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#12

13.08.2015 14:57:17

Цитата
xLeNiNx написал: Файл выложил выше=)

На нём макрос отработал без ошибок.
Всё, что не по теме — создавайте новую(ые) тему(ы).

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

xLeNiNx

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

Понял исправил! Тему создал

 

GermeS

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

#15

13.08.2015 15:53:30

Хотел применить выше упомянутый макрос к листам с 1 по 19 но почему то как только попадает на пустой лист сразу видает ошибку(

Код
Sub Î÷èñòêà()
    Dim i As Integer
    Application.ScreenUpdating = False
    On Error Resume Next
    For i = 1 To 19
    ThisWorkbook.Sheets(i).Activate
    Set Rng = ActiveSheet.Range("B5:BG1000").SpecialCells(xlCellTypeConstants, xlNumberAsText)
    If Not IsEmpty(Rng) Then
        If MsgBox("Действительно удалить?", vbYesNo) = vbYes Then
            Rng.ClearContents
        End If
    Else
        MsgBox "Нет даных!"
    End If
    ActiveSheet.Range("B2").Select
    On Error GoTo 0
    Next i
    Application.ScreenUpdating = True
End Sub
 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#16

13.08.2015 16:10:49

GermeS, замените в макросе.

Код
    On Error Resume Next
    Set Rng = ActiveSheet.Range("B5:BG1000").SpecialCells(xlCellTypeConstants, xlNumberAsText)
    On Error GoTo 0

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

GermeS

Пользователь

Сообщений: 33
Регистрация: 13.08.2015

#17

14.08.2015 09:59:48

JayBhagavan

спс помогло, работает как надо=)
Премного благодарен!


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

Function ClearSheet(shName) ‘— Очистить лист полностью
With Sheets(shName)
.Activate ‘активировать лист
.Cells.Select ‘выделить все ячейки
Selection.Delete Shift:=xlUp ‘удалить все ячейки со сдвигом вверх
Range(«A1»).Select ‘активировать самую первую ячейку
End With
End Function

Понравилась статья? Поделить с друзьями:
  • Макрос для отправки файла excel по почте
  • Макрос для открытия формы excel
  • Макрос для открытия файла word
  • Макрос для открытия листа excel
  • Макрос для открытия документа word