vba - 如何使用 VBA 代码添加新电子表格

标签 vba excel

我正在创建一个宏,宏的部分功能是让 VBA 创建一个新的电子表格。由于发行的性质,名称将会改变。我需要向此电子表格添加代码。我可以这样做吗?

最佳答案

Jook 已经解释了它是如何工作的。我会更进一步。

添加工作表的语法是

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

如果您检查内置 Excel 的帮助,您可以看到 BeforeAfterCountType 的含义对于

来自 EXCEL 的帮助

参数(所有 4 个参数都是可选的)

  1. Before - 一个对象,指定在其之前添加新工作表的工作表。
  2. After - 一个对象,指定在其后添加新工作表的工作表。
  3. Count - 要添加的工作表数量。默认值为一。
  4. 类型 - 指定工作表类型。可以是以下 XlSheetType 常量之一:xlWorksheetxlChartxlExcel4MacroSheetxlExcel4IntlMacroSheet。如果要插入基于现有模板的工作表,请指定模板的路径。默认值为 xlWorksheet。

创建工作表后,您需要使用 .insertlines 创建相关过程并嵌入您要运行的代码。

注意 - IMP:如果您希望代码将代码嵌入到 VBA 项目中,则需要确保您具有“对 VBA 项目对象模型的信任访问 ” 选定。查看快照。

enter image description here

这是一个示例,我创建一个工作表,然后嵌入一个 Worksheet_SelectionChange 代码,该代码将显示一条消息“Hello World”

代码 - 经过尝试和测试

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim nLines As Long
    Dim VBP As Object, VBC As Object, CM As Object
    Dim strProcName As String

    Set ws = Worksheets.Add

    Set VBP = ThisWorkbook.VBProject
    Set VBC = VBP.VBComponents(ws.Name)
    Set CM = VBC.CodeModule

    strProcName = "Worksheet_SelectionChange"

    With ThisWorkbook.VBProject.VBComponents( _
    ThisWorkbook.Worksheets(ws.Name).CodeName).CodeModule
        .InsertLines Line:=.CreateEventProc("SelectionChange", "Worksheet") + 1, _
        String:=vbCrLf & _
        "    Msgbox ""Hello World!"""
    End With
End Sub

这就是运行上述代码后新工作表代码区域的外观。

enter image description here

关于vba - 如何使用 VBA 代码添加新电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278372/

相关文章:

sorting - 使用自定义顺序和包含逗号的值编写 Excel VBA 排序代码

java - 如何用Java编写IF-ELSE语句

arrays - 将项目添加到数组VBA excel

excel - 如何计算Excel中的连续值?

arrays - 将数据从工作表存储到数组

excel - 从 Excel VBA 在 Word 中编写项目符号列表

excel - MS Access 2003 - Access 表单上嵌入的 Excel 电子表格

excel - 我必须在此 VBA 代码中添加什么才能使撤消按钮在运行后继续工作?

excel - 无法在数组公式中实现 INDIRECT()

sql - 使用 Excel VBA 运行 SQL 查询