我正在创建一个宏,宏的部分功能是让 VBA 创建一个新的电子表格。由于发行的性质,名称将会改变。我需要向此电子表格添加代码。我可以这样做吗?
最佳答案
Jook 已经解释了它是如何工作的。我会更进一步。
添加工作表的语法是
expression.Add(Before, After, Count, Type)
如果您检查内置 Excel 的帮助,您可以看到 Before
、After
、Count
、Type
的含义对于
来自 EXCEL 的帮助
参数(所有 4 个参数都是可选的)
Before
- 一个对象,指定在其之前添加新工作表的工作表。After
- 一个对象,指定在其后添加新工作表的工作表。Count
- 要添加的工作表数量。默认值为一。类型
- 指定工作表类型。可以是以下 XlSheetType 常量之一:xlWorksheet
、xlChart
、xlExcel4MacroSheet
或xlExcel4IntlMacroSheet
。如果要插入基于现有模板的工作表,请指定模板的路径。默认值为 xlWorksheet。
创建工作表后,您需要使用 .insertlines
创建相关过程并嵌入您要运行的代码。
注意 - IMP:如果您希望代码将代码嵌入到 VBA 项目中,则需要确保您具有“对 VBA 项目对象模型的信任访问 ” 选定。查看快照。
这是一个示例,我创建一个工作表,然后嵌入一个 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
这就是运行上述代码后新工作表代码区域的外观。
关于vba - 如何使用 VBA 代码添加新电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278372/