基于单元格值创建工作表并复制数据的VBA问题求助
VBA代码修正方案
原代码存在的问题
- 变量
wsName被错误赋值为Range对象,而非单元格的文本值,导致后续无法正确引用新建工作表 Copy.Values属于语法错误,VBA中无此写法- 引用新建工作表时错误将变量名用引号包裹,VBA会把
"wsName"当作字面工作表名称,而非变量值
修正后的代码
Sub AddNewSheetswithNameExample2() Dim newWs As Worksheet Dim wsName As String ' 获取Input表H2单元格的文本值作为工作表名称 wsName = Sheets("Input").Range("H2").Value ' 新建工作表并直接绑定为对象,同时设置名称 Set newWs = ThisWorkbook.Sheets.Add newWs.Name = wsName ' 直接将源区域的值赋值到新工作表目标区域,高效且稳定 newWs.Range("A1:M36").Value = Sheets("Form").Range("PrintRng").Value End Sub
关键优化说明
- 直接使用
Worksheet对象引用新建工作表,避免依赖工作表名称查找或激活状态,更可靠 - 用
.Value获取单元格的实际显示值,确保拿到正确的工作表名称字符串 - 采用直接赋值的方式复制数据,比
Copy/PasteSpecial执行效率更高,且无需操作剪贴板
内容的提问来源于stack exchange,提问作者Glen Powers
相关产品推荐
相关产品推荐

