Macro báo lỗi sheets ws_count select

Skip to main content

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Sheets.Add method (Excel)

  • Article
  • 03/30/2022
  • 2 minutes to read

In this article

Creates a new worksheet, chart, or macro sheet. The new worksheet becomes the active sheet.

Syntax

expression.Add (Before, After, Count, Type)

expression A variable that represents a Sheets object.

Parameters

NameRequired/OptionalData typeDescription
Before Optional Variant An object that specifies the sheet before which the new sheet is added.
After Optional Variant An object that specifies the sheet after which the new sheet is added.
Count Optional Variant The number of sheets to be added. The default value is the number of selected sheets.
Type Optional Variant Specifies the sheet type. Can be one of the following XlSheetType constants: xlWorksheet, xlChart, xlExcel4MacroSheet, or xlExcel4IntlMacroSheet. If you are inserting a sheet based on an existing template, specify the path to the template. The default value is xlWorksheet.

Return value

An Object value that represents the new worksheet, chart, or macro sheet.

Remarks

If Before and After are both omitted, the new sheet is inserted before the active sheet.

Example

This example inserts a new worksheet before the last worksheet in the active workbook.

ActiveWorkbook.Sheets.Add Before:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)

This example inserts a new worksheet after the last worksheet in the active workbook, and captures the returned object reference in a local variable.

Dim sheet As Worksheet
Set sheet = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count))

Note

In 32-bit Excel 2010, this method cannot create more than 255 sheets at one time.

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.


Additional resources

Summary

This article contains a Microsoft Visual Basic for Applications macro (Sub procedure) that loops through all the worksheets in the active workbook. This macro also displays the name of each worksheet.

More Information

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. To try the sample macro, follow these steps:

  1. Type the following macro code into a new module sheet.

          Sub WorksheetLoop()

    Dim WS_Count As Integer
    Dim I As Integer

    ' Set WS_Count equal to the number of worksheets in the active
    ' workbook.
    WS_Count = ActiveWorkbook.Worksheets.Count

    ' Begin the loop.
    For I = 1 To WS_Count

    ' Insert your code here.
    ' The following line shows how to reference a sheet within
    ' the loop by displaying the worksheet name in a dialog box.
    MsgBox ActiveWorkbook.Worksheets(I).Name

    Next I

    End Sub

  2. To run the macro, position the insertion point in the line that reads "Sub WorksheetLoop()," and press F5.

The macro will loop through the workbook and display a message box with a different worksheet name each time it runs through the loop. Note that this macro will only display worksheet names; it will not display the names of other types of sheets in the workbook.

You can also loop through all of the worksheets in the workbook by using a 'For Each' loop.

  1. Enter the following macro code into a new module sheet.

          Sub WorksheetLoop2()

    ' Declare Current as a worksheet object variable.
    Dim Current As Worksheet

    ' Loop through all of the worksheets in the active workbook.
    For Each Current In Worksheets

    ' Insert your code here.
    ' This line displays the worksheet name in a message box.
    MsgBox Current.Name
    Next

    End Sub

  2. To run the macro, position the insertion point in the line that reads "Sub WorksheetLoop2()," and press F5.

This macro works identically to the WorksheetLoop macro, except that it uses a different type of loop to process all of the worksheets in the active workbook.

References

For additional information about getting help with Visual Basic for Applications, please see the following article in the Microsoft Knowledge Base:

163435 VBA: Programming Resources for Visual Basic for Applications

226118 OFF2000: Programming Resources for Visual Basic for Applications

Need more help?