对于VBA来说是新手,将我的代码与其他人以前创建的工作表以及我在网上找到的工作表拼接在一起,基本上是倒退的。
我正在尝试创建一个主工作簿。它从两个工作表开始。第一个(开始)将包含一些影响所有新工作表的宏,第二个(模板)是用于生成其余工作表的模板。在“开始”时,有两个范围(大小可变但大小相等)的集合,一个范围用于从“模板”生成新的工作表。两者都将自己写入每个新工作表的特定单元格中。
到目前为止,我已经设法: -编写一个从Template生成新图纸的子,并从Start的范围1写入每个新图纸的单元格“ C6”。模板(1)上的“ C6”的值等于开始时范围1的单元格1,模板(2)上的“ C6”的值等于开始时范围1的单元格2,依此类推,等等等等。 -编写一个子循环遍历所有新的模板工作表,并将值从“开始”的范围2写入所有模板工作表的单元格“ E6”。 -编写一个子程序,以从“开始”范围1中的值重命名新生成的工作表。
我正在苦苦挣扎的是如何获取在所有工作表中循环的子程序,如何仅将名为“模板(1)”的工作表循环到“模板(X)”,以及如何从单元格1中写入值范围2到模板(1),范围2的单元格2到模板(2),依此类推。
我在SO上找到了用于循环遍历所有工作表的代码,但其中一个基于工作表名称,它不想为此目的工作。另外,我在每个新工作表上都得到了相同的值,而不是与其对应的Range 1对应的Range 2值。
Dim ThisWorkbook As Workbook
Dim recap As Worksheet 'sheet codename for Template
Dim start As Worksheet 'sheet codename for Start
Dim CCell As Range, CSI As Range 'Range 2 is CSI
Set CSI = Sheets("START AND FINISH HERE").Range("CSI")
Set CSI = Range(CSI, CSI.End(xlDown))
For Each CCell In CSI
If CCell <> "" Then
Set recap = Nothing
On Error Resume Next
Set recap = start(CCell.Value)
On Error GoTo 0
If recap Is Nothing Then
Range("E6").Value = CCell.Value
Else
End If
Else
End If
Next CCell