如何使用vba代码创建新工作表?
一旦开始学习 VBA,您可以做的最酷的事情之一就是编写 VBA 代码以将新工作表插入到工作簿中。
嗯,已经有插入新工作表的快捷键,或者也可以使用普通选项,但使用 VBA 代码的好处是,只需单击一下即可添加多个工作表,还可以定义要添加的位置它。
为此,您需要使用 Sheets.Add 方法,在本文中,我们将学习如何使用它在工作簿中添加一个或多个工作表。
Sheets.Add 方法
Sheets.Add ([Before], [After], [Count], [Type])
- 之前:在工作表之前添加新工作表。
- 之后:将新工作表添加到工作表之前。
- 计数:要添加的页数。
- 类型:您要添加的工作表类型 ( 链接)
编写 VBA 代码以将新工作表添加到工作簿
打开 Visual Basic 编辑器并按照以下步骤操作。
- 首先,您需要进入Sheets.Add方法。
- 接下来,您需要定义添加新工作表的位置(之前或之后)。
- 接下来是输入工作表的数量。
- 最终,纸张的类型。
使用 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 语句,并且在此语句中,您有工作表检查功能,该功能检查工作表名称,然后您有一个条件来检查名称单元格是否具有空值。