0
首先要做的事 - 我是一个完整的VBA新手,我放在一起的代码是完整的试验和错误。Excel VBA复制基于水平列表的现有工作表
我试图创建一个代码,它允许我根据“统计”工作表第6行中的部门名称的水平列表创建一个现有工作表(标题为“模板”)的副本(从单元格开始F6)。对于需要包含在文档中的任何新部门,用户可以简单地将新标题添加到下一个单元格(G6,H6等)中,按按钮运行vba,并且将出现一个新的工作表,新标题为工作表标题。
我需要这样做的原因是我使用INDIRECT函数来计算基于部门数据的百分比,我不想依赖谁在将来知道如何修改某些内容Excel(即复制和粘贴现有工作表,重命名并适当更新列表)。
我已经把该代码是这样的:
Sub New_worksheet()
Dim j As Integer
Dim ws As Worksheet
Dim sh As Worksheet
Set ws = Sheets("Template")
Set sh = Sheets("Statistics")
Set Rng = Cells(6, Columns.Count).End(xlToLeft)
Application.ScreenUpdating = 0
For j = 5 To Rng.Column
Sheets("Template").Copy Before:=sh
ActiveSheet.Name = sh.Range("6" & j).Value
Next j
End Sub
,但我得到与ActiveSheet.Name = sh.Range问题( “6” & j)的.value的一部分。我想我已经整理了其余代码中的问题,但由于它不断调试,所以我不确定。
任何人都可以帮忙吗?
快速使用宏记录器会告诉你,“范围”需要以列和行的形式,例如, '范围( “A1”)'。您可以使用'Cells'而不是'Range'并保留现有公式。 – SJR