如何使用vba代码创建新工作表?

一旦开始学习 VBA,您可以做的最酷的事情之一就是编写 VBA 代码以将新工作表插入到工作簿中。

嗯,已经有插入新工作表的快捷键,或者也可以使用普通选项,但使用 VBA 代码的好处是,只需单击一下即可添加多个工作表,还可以定义要添加的位置它。

为此,您需要使用 Sheets.Add 方法,在本文中,我们将学习如何使用它在工作簿中添加一个或多个工作表。

Sheets.Add 方法

 Sheets.Add ([Before], [After], [Count], [Type])
  • 之前:在工作表之前添加新工作表。
  • 之后:将新工作表添加到工作表之前。
  • 计数:要添加的页数。
  • 类型:您要添加的工作表类型 ( 链接)

编写 VBA 代码以将新工作表添加到工作簿

打开 Visual Basic 编辑器并按照以下步骤操作。

  • 首先,您需要进入Sheets.Add方法。
  • 接下来,您需要定义添加新工作表的位置(之前或之后)。
  • 接下来是输入工作表的数量。
  • 最终,纸张的类型。
添加工作表添加 VBA 方法

使用 VBA 代码在工作簿中添加新工作表的不同方法

以下是将新工作表添加到工作簿的不同方法:

1. 添加单张表

要添加单个工作表,您可以使用下面的代码,其中未指定任何参数。

 Sub SheetAddExample1() ActiveWorkbook.Sheets.Add End Sub

此代码告诉 Excel 在活动工作簿中添加一个工作表,但由于没有参数,它将使用默认值并在活动工作表之前添加一个工作表 (xlWorksheet)。

这是另一种编写方法,请参阅下面的代码。

 Sub SheetAddExample2() Sheets.Add End Sub

由于您已经位于活动工作簿中,因此您还可以使用下面的代码。他也做同样的事情。

2. 添加多张表

要一次添加多个工作表,只需将 COUNT 参数设置为要添加的工作表数量即可。

 Sub AddSheets3() Sheets.Add Count:=5 End Sub

现在您设置的工作表数量为 5,因此当您运行此代码时,它会立即将五个新工作表添加到工作簿中。

3. 添加一个带有名称的工作表

如果您想在添加工作表后重命名该工作表,可以使用以下代码:

 Sub AddNewSheetswithNameExample1() Sheets.Add.Name = "myNewSHeet" End Sub

在上面的代码中,我们使用了名称( LINK )对象来帮助您指定工作表的名称。

4. 添加一个具有单元格名称的工作表

您还可以从单元格中获取要用作工作表名称的值。

 Sub AddNewSheetswithNameExample2() Sheets.Add.Name = Range("A1") End Sub

在上面的代码中,单元格 A1 用于获取新工作表的名称。

5. 在特定工作表之后/之前添加工作表

由于这些参数已存在于 Sheets.Add 中,您可以在其中指定要在之前或之后添加新工作表的工作表。

 Sub AddSheetsExample5() Sheets.Add Before:=Worksheets("mySheet") Sheets.Add After:=Worksheets("mySheet") End Sub

现在,在上面的代码中,您在 Sheet.Add 方法中的参数之前和之后使用了两行代码。因此,当您运行此代码时,它会添加两张表,一张在“mySheet”之前,一张在“mySheet”之后。

6. 在开头添加一个新工作表

使用 before using 参数,您还可以将工作表添加到工作簿中工作表的开头。

所以基本上我们要做的是指定工作表编号而不是工作表名称。

 Sub AddSheetsExample6() Sheets.Add Before:=Sheets(1) End Sub

在上面的代码中,您使用了工作表编号 (1),它告诉 VBA 在所有工作表中第一个位置的工作表之前添加该工作表。这样它总是会在开头添加新工作表。

7. 在末尾添加一个新工作表(在最后一个工作表之后)

要在末尾添加新工作表,您需要以不同的方式编写代码。因此,为此您需要知道工作簿中有多少张工作表,以便您可以在末尾添加新工作表。

 Sub AddSheetsExample8() Sheets.Add After:=Sheets(Sheets.Count) End Sub

在上面的代码中,Sheet.Count 返回工作簿中的工作表数量,并且由于您设置了 after 参数,因此它会在工作簿中的最后一个工作表之后添加新工作表。

8. 添加多个工作表并使用范围名称

以下代码对 A1:A7 范围内的行进行计数。之后,它循环根据范围计数添加工作表,并在添加时使用范围值来命名工作表。

 Sub AddSheetsExample9() Dim sheets_count As Integer Dim sheet_name As String Dim i As Integer sheet_count = Range("A1:A7").Rows.Count For i = 1 To sheet_count sheet_name = Sheets("mySheet").Range("A1:A7").Cells(i, 1).Value Worksheets.Add().Name = sheet_name Next i End Sub

但对于上面的代码,您要添加的工作表的名称可能已经存在,或者名称范围中有一个空单元格。

在这种情况下,您需要编写一段代码来检查同名的工作表是否已存在,以及要获取工作表名称的单元格是否为空。

如果仅满足这两个条件,则应添加新工作表。我分两步来说:

首先,您需要编写一个Excel用户定义函数来检查是否存在同名的工作表。

 Function SheetCheck(sheet_name As String) As Boolean Dim ws As Worksheet SheetCheck = False For Each ws In ThisWorkbook.Worksheets If ws.Name = sheet_name Then SheetCheck = True End If Next End Function

其次,您需要使用此函数编写一些代码,并且该代码还需要检查名称单元格是否为空。

 Sub AddMultipleSheet2() Dim sheets_count As Integer Dim sheet_name As String Dim i As Integer sheet_count = Range("A1:A7").Rows.Count For i = 1 To sheet_count sheet_name = Sheets("mySheet").Range("A1:A10").Cells(i, 1).Value If SheetCheck(sheet_name) = False And sheet_name <> "" Then Worksheets.Add().Name = sheet_name End If Next i End Sub

现在,在上面的代码中,您使用了VBA IF 语句,并且在此语句中,您有工作表检查功能,该功能检查工作表名称,然后您有一个条件来检查名称单元格是否具有空值。

示例文件

添加评论

您的邮箱地址不会被公开。 必填项已用 * 标注