VBA代码求助:复制新工作表时插入多行且单元格引用异常
VBA代码修正:复制新工作表时在Sheet1插入行并建立公式引用
问题根源分析
- 触发事件错误:原代码使用
Workbook_SheetActivate事件,每次切换激活任意工作表都会执行代码,比如复制新表后激活新表、再切回Sheet1,会多次触发插入行操作,导致多插行。 - 引用方式错误:直接赋值
Sheets(2).Range("C10")只会复制单元格的静态文本值,而非公式引用;且固定指向Sheet2,无法关联到新复制的目标工作表。
修正后的代码
Private Sub Workbook_NewSheet(ByVal Sh As Object) ' 在Sheet1的A11位置插入整行 Sheets(1).Range("A11").EntireRow.Insert ' 给Sheet1的D11设置公式,引用新工作表的C10单元格 Sheets(1).Range("D11").Formula = "=" & Sh.Name & "!C10" End Sub
代码说明
- 改用
Workbook_NewSheet事件:仅在新建(包括通过复制生成的)工作表时触发一次,从根源避免重复插入行。 - 利用事件参数
Sh:它代表刚创建的新工作表,直接用其名称构建公式,确保引用的是新复制的目标工作表。 - 公式格式正确:通过
"=" & Sh.Name & "!C10"生成标准的跨表引用公式,实现动态关联而非静态复制值。
内容的提问来源于stack exchange,提问作者Scot Robinson
相关产品推荐
相关产品推荐

