I have a macros that generates a number of workbooks. I would like the macros, at the start of the run, to check if the file contains 2 spreadsheets, and delete them if they exist.
The code I tried was:
If Sheet.Name = "ID Sheet" Then
Application.DisplayAlerts = False
Sheet.Delete
Application.DisplayAlerts = True
End If
If Sheet.Name = "Summary" Then
Application.DisplayAlerts = False
Sheet.Delete
Application.DisplayAlerts = True
End If
This code is returning an error:
run time error #424, object required.
I probably have the wrong formatting, but if there is an easier way to do this, it would be very useful.
shA.t
16.4k5 gold badges53 silver badges111 bronze badges
asked Jul 17, 2015 at 11:59
1
Consider:
Sub SheetKiller()
Dim s As Worksheet, t As String
Dim i As Long, K As Long
K = Sheets.Count
For i = K To 1 Step -1
t = Sheets(i).Name
If t = "ID Sheet" Or t = "Summary" Then
Application.DisplayAlerts = False
Sheets(i).Delete
Application.DisplayAlerts = True
End If
Next i
End Sub
NOTE:
Because we are deleting, we run the loop backwards.
answered Jul 17, 2015 at 12:08
Gary’s StudentGary’s Student
95.3k9 gold badges58 silver badges98 bronze badges
Try this code:
For Each aSheet In Worksheets
Select Case aSheet.Name
Case "ID Sheet", "Summary"
Application.DisplayAlerts = False
aSheet.Delete
Application.DisplayAlerts = True
End Select
Next aSheet
answered Jul 17, 2015 at 12:07
R.KatnaanR.Katnaan
2,4764 gold badges23 silver badges35 bronze badges
You could use On Error Resume Next
then there is no need to loop through all the sheets in the workbook.
With On Error Resume Next
the errors are not propagated, but are suppressed instead. So here when the sheets does’t exist or when for any reason can’t be deleted, nothing happens. It is like when you would say : delete this sheets, and if it fails I don’t care. Excel is supposed to find the sheet, you will not do any searching.
Note: When the workbook would contain only those two sheets, then only the first sheet will be deleted.
Dim book
Dim sht as Worksheet
set book= Workbooks("SomeBook.xlsx")
On Error Resume Next
Application.DisplayAlerts=False
Set sht = book.Worksheets("ID Sheet")
sht.Delete
Set sht = book.Worksheets("Summary")
sht.Delete
Application.DisplayAlerts=True
On Error GoTo 0
answered Jul 17, 2015 at 12:24
Daniel DušekDaniel Dušek
13.6k5 gold badges35 silver badges51 bronze badges
5
Worksheets("Sheet1").Delete
Worksheets("Sheet2").Delete
maazza
6,92615 gold badges61 silver badges95 bronze badges
answered Feb 2, 2017 at 16:43
try this within your if statements:
Application.DisplayAlerts = False
Worksheets(“Sheetname”).Delete
Application.DisplayAlerts = True
answered Jul 17, 2015 at 12:04
LuuklagLuuklag
3,90711 gold badges39 silver badges57 bronze badges
4
In this VBA Tutorial, you learn how to delete sheets in Excel (in different ways) with macros.
This VBA Tutorial is accompanied by Excel workbooks containing the data and macros I use in the examples below. You can get immediate free access to these example workbooks by subscribing to the Power Spreadsheets Newsletter.
Use the following Table of Contents to navigate to the section you’re interested in.
Related VBA and Macro Tutorials
The following VBA and macro tutorials may help you better understand and implement the contents below:
- General VBA constructs and structures:
- Learn about commonly-used VBA terms here.
- Learn how to work with the Visual Basic Editor (VBE) here.
- Learn how to create and work with VBA Sub procedures here.
- Learn how to work with object methods here.
- Learn how to declare and work with variables here.
- Learn how to work with data types here.
- Learn how to work with arrays here.
- Practical VBA applications and macro examples:
- Learn other operations you can carry out when working with Excel worksheets here.
You can find additional VBA and Macro Tutorials in the Archives.
#1: Delete Sheet by Position
VBA Code to Delete Sheet by Position
To delete a sheet by its position using VBA, use a statement with the following structure:
Sheets(SheetIndex).Delete
Process Followed by VBA Code to Delete Sheet by Position
VBA Statement Explanation
- Item: Sheets.
- VBA Construct: Workbook.Sheets property.
- Description: The Workbook.Sheets property returns a Sheets collection representing all the sheets within the workbook you deal with. Identify a single object from this Sheets collection by specifying the appropriate index number (SheetIndex).
When deleting a worksheet, you can work with the Workbook.Worksheets property. Workbook.Worksheets represents a Sheets collection representing all worksheets within the workbook you deal with.
When deleting a chart sheet, you can work with the Workbook.Charts property. Workbook.Charts returns a Sheets collection representing all chart sheets within the workbook you deal with.
- Item: SheetIndex.
- VBA Construct: Index parameter/number of the sheet you want to delete.
- Description: The Index parameter/number of a sheet allows you to identify a single object (worksheet or chart sheet) from the Sheets collection you work with.
The Index parameter/number represents the position of the sheet, worksheet or chart sheet in the tab bar of the workbook you deal with, from left to right. For example, 1 is the first (leftmost) sheet/worksheet/chart sheet.
When specifying the Index parameter/number, consider the following:
- The count usually includes hidden sheets/worksheets/chart sheets as well.
- If you’re working with the Workbook.Worksheets property, the count includes worksheets but not chart sheets.
- If you’re working with the Workbook.Charts property, the count includes chart sheets but not worksheets.
If you explicitly declare a variable to represent SheetIndex, use the Long data type.
- Item: Delete.
- VBA Construct: Worksheet.Delete method or Chart.Delete method.
- Description: The Delete method deletes the object (worksheet or chart sheet) you identify with Sheets(SheetIndex).
When you delete a sheet with the Delete method, Excel usually displays (by default) a dialog box asking the user to confirm the deletion. Please refer to the appropriate section below to delete a sheet with no prompt.
Macro Example to Delete Sheet by Position
The following macro deletes the first sheet (Sheets(mySheetIndex)) in the workbook where the macro is stored (ThisWorkbook). The macro suppresses the prompt that asks the user to confirm the sheet deletion (Application.DisplayAlerts = False).
Sub deleteSheet() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-delete-sheet/ 'declare variable to hold index number of sheet you want to delete Dim mySheetIndex As Long 'specify index number of sheet you want to delete mySheetIndex = 1 'suppress the dialog box that asks the user to confirm the sheet deletion Application.DisplayAlerts = False 'identify sheet you want to delete, and delete it ThisWorkbook.Sheets(mySheetIndex).Delete 're-enable the display of alerts and messages Application.DisplayAlerts = True End Sub
Effects of Executing Macro Example to Delete Sheet by Position
The following GIF illustrates the results of executing the macro example. The first sheet in the workbook (Sheet1) is deleted.
#2: Delete Active Sheet
VBA Code to Delete Active Sheet
To delete the active sheet with VBA, use a statement with the following structure:
ActiveSheet.Delete
Process Followed by VBA Code to Delete Active Sheet
VBA Statement Explanation
- Item: ActiveSheet.
- VBA Construct: Application.ActiveSheet property.
- Description: The Application.ActiveSheet property returns an object representing the active sheet.
- Item: Delete.
- VBA Construct: Worksheet.Delete method or Chart.Delete method.
- Description: The Delete method deletes the object (worksheet or chart sheet) returned by ActiveSheet (the active sheet).
When you delete a sheet with the Delete method, Excel usually displays (by default) a dialog box asking the user to confirm the deletion. Please refer to the appropriate section below to delete a sheet with no prompt.
Macro Example to Delete Active Sheet
The following macro deletes the active sheet (ActiveSheet). The macro suppresses the prompt that asks the user to confirm the sheet deletion (Application.DisplayAlerts = False).
Sub deleteActiveSheet() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-delete-sheet/ 'suppress the dialog box that asks the user to confirm the sheet deletion Application.DisplayAlerts = False 'identify active sheet, and delete it ActiveSheet.Delete 're-enable the display of alerts and messages Application.DisplayAlerts = True End Sub
Effects of Executing Macro Example to Delete Active Sheet
The following GIF illustrates the results of executing the macro example. The active sheet (Sheet2) is deleted.
#3: Delete Sheet by Name
VBA Code to Delete Sheet by Name
To delete a sheet by name using VBA, use a statement with the following structure:
Sheets(SheetName).Delete
Process Followed by VBA Code to Delete Sheet by Name
VBA Statement Explanation
- Item: Sheets.
- VBA Construct: Workbook.Sheets property.
- Description: The Workbook.Sheets property returns a Sheets collection representing all the sheets within the workbook you deal with. Identify a single object from this Sheets collection by specifying the appropriate name (SheetName).
When deleting a worksheet, you can work with the Workbook.Worksheets property. Workbook.Worksheets represents a Sheets collection representing all worksheets within the workbook you deal with.
When deleting a chart sheet, you can work with the Workbook.Charts property. Workbook.Charts returns a Sheets collection representing all chart sheets within the workbook you deal with.
- Item: SheetName.
- VBA Construct: Name of the sheet you want to delete.
- Description: The name of a sheet allows you to identify a single object (worksheet or chart sheet) from the Sheets collection you work with.
For these purposes, the sheet name is that displayed in the tab of the worksheet or chart sheet. If you explicitly declare a variable to represent SheetName, use the String data type.
- Item: Delete.
- VBA Construct: Worksheet.Delete method or Chart.Delete method.
- Description: The Delete method deletes the object (worksheet or chart sheet) you identify with Sheets(SheetName).
When you delete a sheet with the Delete method, Excel usually displays (by default) a dialog box asking the user to confirm the deletion. Please refer to the appropriate section below to delete a sheet with no prompt.
Macro Example to Delete Sheet by Name
The following macro deletes the sheet named “delete Sheet” (Sheets(mySheetName)) in the workbook where the macro is stored (ThisWorkbook). The macro suppresses the prompt that asks the user to confirm the sheet deletion (Application.DisplayAlerts = False).
Sub deleteSheetByName() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-delete-sheet/ 'declare variable to hold name of sheet you want to delete Dim mySheetName As String 'specify name of sheet you want to delete mySheetName = "delete sheet" 'suppress the dialog box that asks the user to confirm the sheet deletion Application.DisplayAlerts = False 'identify sheet you want to delete, and delete it ThisWorkbook.Sheets(mySheetName).Delete 're-enable the display of alerts and messages Application.DisplayAlerts = True End Sub
Effects of Executing Macro Example to Delete Sheet by Name
The following GIF illustrates the results of executing the macro example. The sheet named “delete sheet” is deleted.
#4: Delete Sheet Without Prompt or Warning
VBA Code to Delete Sheet Without Prompt or Warning
To delete a sheet without Excel displaying the usual prompt (warning) with VBA, use a macro with the following statement structure:
Application.DisplayAlerts = False Sheets(SheetName).Delete Application.DisplayAlerts = True
Process Followed by VBA Code to Delete Sheet Without Prompt or Warning
VBA Statement Explanation
Lines #1 and #3: Application.DisplayAlerts = False | Application.DisplayAlerts = True
- Item: Application.DisplayAlerts.
- VBA Construct: Application.DisplayAlerts property.
- Description: The Application.DisplayAlerts property allows you to specify whether Excel displays alerts and messages while the macro is running. When you delete a sheet, the main alert that Excel usually displays (and you want to handle) is the dialog box that prompts the user to confirm the sheet deletion.
The default value of the Application.DisplayAlerts property is True. In such cases, Excel displays the dialog box prompting the user to confirm the sheet deletion.
- Item: False.
- VBA Construct: New property value of Application.DisplayAlerts property.
- Description: When you delete a sheet, you can suppress the dialog box that prompts the user to confirm the sheet deletion, by setting the Application.DisplayAlerts property to False.
When you set Application.DisplayAlerts to False and Excel requires a response, Excel chooses the default response. When you delete a sheet, the default response to the dialog box prompting the user to confirm the sheet deletion is “Delete”. This results in Excel deleting the sheet.
- Item: True.
- VBA Construct: New property value of Application.DisplayAlerts property.
- Description: The default value of the Application.DisplayAlerts property is True. This results in Excel displaying alerts and messages while a macro is running.
Generally, when you set Application.DisplayAlerts to False, Excel sets the property back to True upon finishing macro execution. Since there are exceptions (such as executing cross-process code), you can explicitly set Application.DisplayAlerts back to True after deleting the sheet.
Line #2: Sheets(SheetName).Delete
- Item: Sheets.
- VBA Construct: Workbook.Sheets property.
- Description: The Workbook.Sheets property returns a Sheets collection representing all the sheets within the workbook you deal with. Identify a single object from this Sheets collection by specifying the appropriate name (SheetName).
When deleting a worksheet, you can work with the Workbook.Worksheets property. Workbook.Worksheets represents a Sheets collection representing all worksheets within the workbook you deal with.
When deleting a chart sheet, you can work with the Workbook.Charts property. Workbook.Charts returns a Sheets collection representing all chart sheets within the workbook you deal with.
- Item: SheetName.
- VBA Construct: Name of the sheet you want to delete.
- Description: The name of a sheet allows you to identify a single object (worksheet or chart sheet) from the Sheets collection you work with.
For these purposes, the sheet name is that displayed in the tab of the worksheet or chart sheet. If you explicitly declare a variable to represent SheetName, use the String data type.
- Item: Delete.
- VBA Construct: Worksheet.Delete method or Chart.Delete method.
- Description: The Delete method deletes the object (worksheet or chart sheet) you identify with Sheets(SheetName).
Macro Example to Delete Sheet Without Prompt or Warning
The following macro deletes the sheet named “delete sheet no prompt” (Sheets(mySheetName)) in the workbook where the macro is stored (ThisWorkbook) without displaying the prompt that asks the user to confirm the sheet deletion (Application.DisplayAlerts = False).
Sub deleteSheetNoPrompt() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-delete-sheet/ 'declare variable to hold name of sheet you want to delete Dim mySheetName As String 'specify name of sheet you want to delete mySheetName = "delete sheet no prompt" 'suppress the dialog box that asks the user to confirm the sheet deletion Application.DisplayAlerts = False 'identify sheet you want to delete, and delete it ThisWorkbook.Sheets(mySheetName).Delete 're-enable the display of alerts and messages Application.DisplayAlerts = True End Sub
Effects of Executing Macro Example to Delete Sheet Without Prompt or Warning
The following GIF illustrates the results of executing the macro example. The sheet named “delete sheet no prompt” is deleted without a prompt or warning.
#5: Delete Sheet if it Exists
VBA Code to Delete Sheet if it Exists
To delete a sheet if it exists with VBA, use a macro with the following statement structure:
On Error Resume Next Sheets(SheetName).Delete On Error GoTo 0
Process Followed by VBA Code to Delete Sheet if it Exists
VBA Statement Explanation
Line #1: On Error Resume Next
- Item: On Error Resume Next.
- VBA Construct: On Error Resume Next statement.
- Description: The On Error Resume Next statement specifies that, if an error occurs, control goes to the statement immediately following the statement where the error occurs. Execution continues at that statement that follows that where the error occurs.
“Sheets(SheetName).Delete” usually returns run-time error 9 (subscript out of range) when the sheet identified by Sheets(SheetName) doesn’t exist. Without the On Error Resume Next statement, such error results in Excel displaying an error message and stopping macro execution.
Therefore:
- If the sheet named SheetName exists, Excel deletes the sheet as specified by “Sheets(SheetName).Delete”.
- If the sheet named SheetName doesn’t exist, execution of the macro continues on the statement following “Sheet(SheetName).Delete”. Due to the On Error Resume Next statement, Excel handles the run-time error.
Line #2: Sheets(SheetName).Delete
- Item: Sheets.
- VBA Construct: Workbook.Sheets property.
- Description: The Workbook.Sheets property returns a Sheets collection representing all the sheets within the workbook you deal with. Identify a single object from this Sheets collection by specifying the appropriate name (SheetName).
When deleting a worksheet, you can work with the Workbook.Worksheets property. Workbook.Worksheets represents a Sheets collection representing all worksheets within the workbook you deal with.
When deleting a chart sheet, you can work with the Workbook.Charts property. Workbook.Charts returns a Sheets collection representing all chart sheets within the workbook you deal with.
- Item: SheetName.
- VBA Construct: Name of the sheet you want to delete.
- Description: The name of a sheet allows you to identify a single object (worksheet or chart sheet) from the Sheets collection you work with.
For these purposes, the sheet name is that displayed in the tab of the worksheet or chart sheet. If you explicitly declare a variable to represent SheetName, use the String data type.
- Item: Delete.
- VBA Construct: Worksheet.Delete method or Chart.Delete method.
- Description: The Delete method deletes the object (worksheet or chart sheet) you identify with Sheets(SheetName).
When you delete a sheet with the Delete method, Excel usually displays (by default) a dialog box asking the user to confirm the deletion. Please refer to the appropriate section above to delete a sheet with no prompt.
Line #3: On Error GoTo 0
- Item: On Error GoTo 0.
- VBA Construct: On Error GoTo 0 statement.
- Description: The On Error GoTo 0 statement disables the error handling specified by the On Error Resume Next statement. If you omit the On Error GoTo 0 statement, Excel generally disables the error handler automatically when exiting the procedure.
Macro Example to Delete Sheet if it Exists
The following macro deletes the sheet named “delete sheet if exists” (Sheets(mySheetName)) in the workbook where the macro is stored (ThisWorkbook), if such sheet exists. If the sheet doesn’t exist, the macro handles the error. The macro suppresses the prompt that asks the user to confirm the sheet deletion (Application.DisplayAlerts = False).
Sub deleteSheetIfExists() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-delete-sheet/ 'declare variable to hold name of sheet you want to delete Dim mySheetName As String 'specify name of sheet you want to delete mySheetName = "delete sheet if exists" 'suppress the dialog box that asks the user to confirm the sheet deletion Application.DisplayAlerts = False 'enable error handling to deal with error that occurs when (if) you try to delete a sheet that doesn't exist On Error Resume Next 'identify sheet you want to delete, and delete it ThisWorkbook.Sheets(mySheetName).Delete 'disable error handling On Error GoTo 0 're-enable the display of alerts and messages Application.DisplayAlerts = True End Sub
Effects of Executing Macro Example to Delete Sheet if it Exists
The following GIF illustrates the results of executing the macro example. The sheet named “delete sheet if exists” is deleted.
#6: Delete Multiple Sheets
VBA Code to Delete Multiple Sheets
To delete multiple sheets with VBA, use a statement with the following structure:
Sheets(Array(SheetsList)).Delete
Process Followed by VBA Code to Delete Multiple Sheets
VBA Statement Explanation
- Item: Sheets.
- VBA Construct: Workbook.Sheets property.
- Description: The Workbook.Sheets property returns a Sheets collection representing all the sheets within the workbook you deal with. Identify a single object from this Sheets collection by specifying the appropriate name (SheetName).
When deleting worksheets, you can work with the Workbook.Worksheets property. Workbook.Worksheets represents a Sheets collection representing all worksheets within the workbook you deal with.
When deleting chart sheets, you can work with the Workbook.Charts property. Workbook.Charts returns a Sheets collection representing all chart sheets within the workbook you deal with.
- Item: Array(…).
- VBA Construct: Array function.
- Description: The Array function returns a Variant containing an array.
- Item: SheetsList.
- VBA Construct: Argument list of Array function.
- Description: A comma-delimited list of the values you assign to each of the array elements.
You can generally identify specific objects from the Sheets collection you work with using an index number or the sheet name, as follows:
- The index number represents the position of a sheet, worksheet or chart sheet in the tab bar of the workbook you deal with, from left to right. For example, 1 is the first (leftmost) sheet/worksheet/chart sheet.
When specifying the Index parameter/number, consider the following:
- The count usually includes hidden sheets/worksheets/chart sheets as well.
- If you’re working with the Workbook.Worksheets property, the count includes worksheets but not chart sheets.
- If you’re working with the Workbook.Charts property, the count includes chart sheets but not worksheets.
- The sheet name is that displayed in the tab of the worksheet or chart sheet.
- The index number represents the position of a sheet, worksheet or chart sheet in the tab bar of the workbook you deal with, from left to right. For example, 1 is the first (leftmost) sheet/worksheet/chart sheet.
- Item: Delete.
- VBA Construct: Worksheet.Delete method or Chart.Delete method.
- Description: The Delete method deletes the object (worksheets or chart sheets) you identify with Sheets(Array(SheetsList)).
When you delete a sheet with the Delete method, Excel usually displays (by default) a dialog box asking the user to confirm the deletion. Please refer to the appropriate section above to delete a sheet with no prompt.
Macro Example to Delete Multiple Sheets
The following macro deletes (i) the first 2 sheets, and (ii) the sheets named “delete multiple sheets 1” and “delete multiple sheets 2” (Sheets(mySheetNames)), in the workbook where the macro is stored (ThisWorkbook). The macro suppresses the prompt that asks the user to confirm the sheet deletion (Application.DisplayAlerts = False).
Sub deleteMultipleSheets() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-delete-sheet/ 'declare variable to hold Variant containing array whose elements are the index numbers or names of the sheets you want to delete Dim mySheetNames() As Variant 'specify (using index numbers or names) the sheets you want to delete mySheetNames = Array(1, 2, "delete multiple sheets 1", "delete multiple sheets 2") 'suppress the dialog box that asks the user to confirm the sheet deletion Application.DisplayAlerts = False 'identify sheets you want to delete, and delete them ThisWorkbook.Sheets(mySheetNames).Delete 're-enable the display of alerts and messages Application.DisplayAlerts = True End Sub
Effects of Executing Macro Example to Delete Multiple Sheets
The following GIF illustrates the results of executing the macro example. The (i) the first 2 sheets (Sheet6 and Sheet7), and (ii) the sheets named “delete multiple sheets 1” and “delete multiple sheets 2”, are deleted.
References to VBA Constructs Used in this VBA Tutorial
Use the following links to visit the appropriate webpage in the Microsoft Developer Network:
- Identify workbook containing sheets, worksheets or chart sheets to delete:
- Application.ThisWorkbook property.
- Application.ActiveWorkbook property.
- Application.Workbooks property.
- Workbook object.
- Identify sheets, worksheets and chart sheets:
- Workbook.Sheets property.
- Application.ActiveSheet property.
- Sheets object.
- Workbook.Worksheets property.
- Worksheet object.
- Workbook.Charts property.
- Chart object.
- Delete sheets, worksheets and chart sheets:
- Worksheet.Delete method.
- Chart.Delete method.
- Prevent Excel from displaying prompts or warnings when deleting a sheet, worksheet or chart sheet:
- Application.DisplayAlerts property.
- Handle errors:
- On Error statement.
- Create an array containing the names of several sheets, worksheets or chart sheets to delete:
- Array function.
- Work with variables and data types:
- Dim statement.
- = operator.
- Data types:
- Long data type.
- String data type.
- Variant data type.
Создание, копирование, перемещение и удаление рабочих листов Excel с помощью кода VBA. Методы Sheets.Add, Worksheet.Copy, Worksheet.Move и Worksheet.Delete.
Создание новых листов
Создание новых рабочих листов осуществляется с помощью метода Sheets.Add.
Синтаксис метода Sheets.Add
expression.Add [Before, After, Count, Type]
где expression — переменная, представляющая собой объект Sheet.
Компоненты метода Sheets.Add
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлен новый.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлен новый.
- Count — необязательный параметр типа данных Variant, указывающий, сколько листов будет добавлено (по умолчанию — 1).
- Type — необязательный параметр типа данных Variant, указывающий тип листа: xlWorksheet** (рабочий лист) или xlChart (диаграмма), по умолчанию — xlWorksheet.
*Если Before и After не указаны, новый лист, по умолчанию, будет добавлен перед активным листом.
**Для создания рабочего листа (xlWorksheet) можно использовать метод Worksheets.Add, который для создания диаграмм уже не подойдет.
Примеры создания листов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
‘Создание рабочего листа: Sheets.Add Worksheets.Add ThisWorkbook.Sheets.Add After:=ActiveSheet, Count:=2 Workbooks(«Книга1.xlsm»).Sheets.Add After:=Лист1 Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(1) Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(«Лист1») ‘Создание нового листа с заданным именем: Workbooks(«Книга1.xlsm»).Sheets.Add.Name = «Мой новый лист» ‘Создание диаграммы: Sheets.Add Type:=xlChart ‘Добавление нового листа перед ‘последним листом рабочей книги Sheets.Add Before:=Sheets(Sheets.Count) ‘Добавление нового листа в конец Sheets.Add After:=Sheets(Sheets.Count) |
- Лист1 в After:=Лист1 — это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
- Лист1 в After:=Worksheets(«Лист1») — это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.
Создаваемый лист можно присвоить объектной переменной:
Dim myList As Object ‘В активной книге Set myList = Worksheets.Add ‘В книге «Книга1.xlsm» Set myList = Workbooks(«Книга1.xlsm»).Worksheets.Add ‘Работаем с переменной myList.Name = «Listok1» myList.Cells(1, 1) = myList.Name ‘Очищаем переменную Set myList = Nothing |
Если создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.
Копирование листов
Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.
Синтаксис метода Worksheet.Copy
expression.Copy [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Copy
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.
*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.
Примеры копирования листов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
‘В пределах активной книги ‘(уникальные имена листов) Лист1.Copy After:=Лист2 ‘В пределах активной книги ‘(имена листов на ярлычках) Worksheets(«Лист1»).Copy Before:=Worksheets(«Лист2») ‘Вставить копию в конец Лист1.Copy After:=Sheets(Sheets.Count) ‘Из одной книги в другую Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Copy _ After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1») ‘Один лист активной книги в новую книгу Лист1.Copy ‘Несколько листов активной книги в новую книгу* Sheets(Array(«Лист1», «Лист2», «Лист3»)).Copy ‘Все листы книги с кодом в новую книгу ThisWorkbook.Worksheets.Copy |
* Если при копировании в новую книгу нескольких листов хотя бы один лист содержит умную таблицу — копирование невозможно. Один лист, содержащий умную таблицу, копируется в новую книгу без проблем.
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листов
Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.
Синтаксис метода Worksheet.Move
expression.Move [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Move
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.
*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.
Примеры перемещения листов
Простые примеры перемещения листов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
‘В пределах активной книги ‘(уникальные имена листов) Лист1.Move After:=Лист2 ‘В пределах активной книги ‘(имена листов на ярлычках) Worksheets(«Лист1»).Move Before:=Worksheets(«Лист2») ‘Размещение после последнего листа: Лист1.Move After:=Sheets(Sheets.Count) ‘Из одной книги в другую Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Move _ After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1») ‘В новую книгу Лист1.Move |
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:
Sub Peremeshcheniye() Dim x x = InputBox(«Введите имя или номер листа», «Перемещение листа «Лист4»») If IsNumeric(x) Then x = CLng(x) Sheets(«Лист4»).Move Before:=Sheets(x) End Sub |
Удаление листов
Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete
Синтаксис метода Worksheet.Delete
expression.Delete
где expression — переменная, представляющая собой объект Worksheet.
Примеры удаления листов
‘По уникальному имени Лист1.Delete ‘По имени на ярлычке Worksheets(«Лист1»).Delete ‘По индексу листа Worksheets(1).Delete ‘В другой книге Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Delete |
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.
Skip to content
How to delete a single Excel worksheet using Excel, VBA and Shortcut methods
METHOD 1. Delete an Excel worksheet using the sheet option
EXCEL
Right-click on the worksheet > Delete
1. Right-click on the worksheet that you want to delete. 2. Click Delete. Note: in this example we are deleting Sheet2. |
METHOD 2. Delete an Excel worksheet using the ribbon option
EXCEL
Select a worksheet > Home tab > Cells group > Delete > Delete Sheet
1. Select the worksheet that you want to delete. Note: in this example we are deleting Sheet2. |
2. Select the Home tab. |
3. Click Delete in the Cells group. 4. Click Delete Sheet. |
METHOD 1. Delete an Excel worksheet using VBA with a Worksheets object
VBA
Sub Delete_Worksheet()
‘delete a worksheet named Sheet2
Worksheets(«Sheet2»).Delete
End Sub
OBJECTS
Worksheets: The Worksheets object represents all of the worksheets in a workbook, excluding chart sheets.
PREREQUISITES
Worksheet Name: Have a worksheet named Sheet2.
Minimum Number of Worksheets: The workbook has at least two worksheets.
ADJUSTABLE PARAMETERS
Worksheet Selection: Select the worksheet that you want to delete by changing the Sheet2 worksheet name in the VBA code to any worksheet in the workbook.
METHOD 2. Delete an Excel worksheet using VBA with a Sheets object
VBA
Sub Delete_Worksheet()
‘delete a worksheet named Sheet2
Sheets(«Sheet2»).Delete
End Sub
OBJECTS
Sheets: The Sheets object represents all of the sheets in a workbook, including worksheets and chart sheets.
PREREQUISITES
Worksheet Name: Have a worksheet named Sheet2.
Minimum Number of Worksheets: The workbook has at least two worksheets.
ADJUSTABLE PARAMETERS
Worksheet Selection: Select the worksheet that you want to delete by changing the Sheet2 worksheet name in the VBA code to any worksheet in the workbook.
METHOD 3. Delete an Excel worksheet using VBA using sheet reference
VBA
Sub Delete_Worksheet_Using_Sheet_Reference()
‘delete a worksheet that’s referenced as the second worksheet
Sheet2.Delete
End Sub
OBJECTS
Sheets: The Sheets object represents all of the sheets in a workbook, including worksheets and chart sheets.
PREREQUISITES
Minimum Number of Worksheets: The workbook has at least two worksheets.
ADJUSTABLE PARAMETERS
Sheet Reference Selection: Select the worksheet that you want to delete by changing the sheet reference, in the VBA code, to the sheet reference that refers to the worksheet that you want to delete.
Delete a worksheet using a Shortcut
SHORTCUT
WINDOWS SHORTCUT
NOTES
Select the worksheet you want to delete, then action the shortcut.
Explanation about how to delete a worksheet
EXPLANATION
EXPLANATION
This tutorial explains and provides step by step instructions on how to delete a single worksheet using Excel, VBA and Shortcut methods.
Excel Methods: Using Excel you can delete a worksheet with a ribbon or sheet option.
VBA Methods: Using VBA you can delete a worksheet referencing to a Worksheets or Sheets object.
Shortcut Method: Using a Shortcut you can delete a selected worksheet.