作者:绿色风
分类:
时间:2022-08-17
浏览:104
楼主 zzmxy |
Q: 如下图所示,当我在B列添加“姓名5”时,能否自动生成一个'姓名5'的工作表,格式和工作表'姓名1'一样, 并且C7单元表引用'姓名5'工作表的K32单元格的值?
A: 代码如下即可实现。 其中,我们先用Sheets(Target.Text).Activate,即将以单元格的值为名称的工作表激活,产生的Err值来判断是否已经存在这个工作表, 如果Err=0,也就是可以顺利激活,那么表示这个工作表已经存在,那么就不作任何操作; 如果Err<>0,也就是说工作表不存在,激活过程出现Error,那么,我们才根据单元格值来建立新的工作表; 并将原'姓名1'工作表里独立值删掉,并用.Formula输入对应C列处的公式。 详细请参考附件。- Private Sub Worksheet_Change(ByVal Target As Range)
- Application.ScreenUpdating = False
- Dim sht As Worksheets
- On Error Resume Next
- If Target.Column = 2 And Target.Row > 2 Then
- Sheets(Target.Text).Activate
- If Err <> 0 Then
- Sheets(2).Copy after:=Sheets(Worksheets.Count)
- With ActiveSheet
- .Name = Target.Text
- .Range("D13:K22").ClearContents
- .Range("D25:K30").ClearContents
- Target.Offset(0, 1).Formula = "=" & .Name & "!K32"
- End With
- End If
- Sheet1.Activate
- End If
- Application.ScreenUpdating = True
- End Sub
自动添加相同格式的工作表zz.rar |
2楼 nothingwmm |
- Private Sub Worksheet_Change(ByVal Target As Range)
- If Target.Column = 2 And Target.Row > 2 Then
- If Err = 0 Then
- Sheet2.Copy after:=Sheets(Worksheets.Count)
- With ActiveSheet
- .Name = Target.Text
- .Range("D13:K22", "D25:K30").ClearContents
- Target.Offset(0, 1).Formula = "=" & .Name & "!K32"
- End With
- Else: MsgBox "文件已存在,请查证后再说"
- End If
- Sheet1.Activate
- End If
- End Sub
|
3楼 zzmxy |
当有相同的工作表名存在时,你的代码就无法执行下去了……~~ |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一