VBA新建Excel工作表时如何将表名自动写入新表A1单元格
VBA 新建工作表自动写入表名到A1单元格实现方法
修改思路
原代码采用链式调用创建工作表并直接赋值名称,未留存新工作表的对象引用,无法直接操作新表单元格。修改时只需将新建的工作表赋值给Worksheet类型变量,即可直接对新表单元格做写入操作,无需额外通过表名遍历查找工作表,稳定性更高。
具体修改点
- 新增
Worksheet类型对象变量,用于存储新建的工作表实例 - 创建工作表时先将新表赋值给对象变量,再设置工作表名称
- 名称设置完成后,直接通过对象变量访问新表的A1单元格,写入工作表名称
- 补全原代码缺失的
SheetExists自定义函数实现,避免运行时报错 - 修正原代码中空输入时的死循环问题、拼写错误、提示文本不匹配问题
修改后完整代码
Sub AddNewSheet() Dim sheetName As String Dim shExists As Boolean Dim newWs As Worksheet ' 存储新建工作表的对象变量 Do sheetName = InputBox("Name of sheet", "Add sheet") If sheetName <> "" Then shExists = SheetExists(sheetName) If Not shExists Then ' 创建新工作表并赋值给变量 Set newWs = Worksheets.Add(After:=Worksheets(Worksheets.Count)) newWs.Name = sheetName ' 核心逻辑:将表名写入新表A1单元格 newWs.Cells(1, 1).Value = sheetName MsgBox "The sheet " & sheetName & " is successfully made", , "Result" Else MsgBox "The name is already present, please enter a new name", vbOKOnly + vbInformation, "Name" End If Else MsgBox "Please enter the sheet name", vbOKOnly + vbInformation, "Warning" Exit Sub ' 用户输入为空/点取消时直接退出过程,避免死循环 End If Loop Until Not shExists Or sheetName = "" End Sub ' 工作表存在性判断自定义函数 Function SheetExists(shtName As String) As Boolean Dim sht As Worksheet On Error Resume Next Set sht = Worksheets(shtName) SheetExists = Not sht Is Nothing On Error GoTo 0 End Function
提示:如果需要保留原代码中
Please enter the OSAT的提示文本,直接替换对应MsgBox里的字符串即可,不影响核心写入逻辑。
内容的提问来源于stack exchange,提问作者user19457634
相关产品推荐
相关产品推荐

