具有信息的工作表的格式如下...
Project# Project Name Item#1 Item#2 Item#3 Item#4 Item#5 Item#6
我想在项目名称之后命名新工作表。我认为以所需格式设置新工作表的最简单方法是设置一个工作表,将一行中的所有信息复制到此工作表中,然后将其复制到具有项目名称的新工作表中。
我设置了一个 For Each 循环以确定是否有项目名称,如果有,则使用从另一个工作表复制的格式创建新工作表。我的问题是我无法弄清楚如何将该行上的所有其他单元格复制到新工作表中。
我可以使用某种偏移量来复制其余字段吗?我想我不明白如何知道哪个单元格处于事件状态。我有没有提到我对 VBA 非常缺乏经验?
我想除了 For Each 循环之外,可能还有许多其他方法可以做到这一点,我绝不反对重新开始,因此非常感谢任何和所有建议!
这是我刚刚创建新工作表的代码,但现在我只是卡住了......
Sub Create_Certificate()
For Each ProjectName In Worksheets("Paste").Range("H6:H104")
If ProjectName <> "" Then
Sheets("Do Not Modify").Copy After:=Sheets("Do Not Modify")
ActiveSheet.Name = ProjectName
End If
Next ProjectName
End Sub
只是想分享我的成品,以防其他人遇到这种情况......
Sub Create_Certificate()
For Each ProjectName In Worksheets("Paste").Range("H6:H104")
If ProjectName <> "" Then
Sheets("Do Not Modify").Range("G7").Value = Sheets("Paste").Range("G" & ProjectName.Row).Value
Sheets("Do Not Modify").Range("H20").Value = Sheets("Paste").Range("H" & ProjectName.Row).Value
Sheets("Do Not Modify").Range("D14").Value = Sheets("Paste").Range("I" & ProjectName.Row).Value
Sheets("Do Not Modify").Range("D13").Value = Sheets("Paste").Range("J" & ProjectName.Row).Value
Sheets("Do Not Modify").Range("D11").Value = Sheets("Paste").Range("K" & ProjectName.Row).Value
Sheets("Do Not Modify").Range("D12").Value = Sheets("Paste").Range("L" & ProjectName.Row).Value
Sheets("Do Not Modify").Range("D16").Value = Sheets("Paste").Range("M" & ProjectName.Row).Value
Sheets("Do Not Modify").Range("D15").Value = Sheets("Paste").Range("N" & ProjectName.Row).Value
Sheets("Do Not Modify").Copy After:=Sheets("Do Not Modify")
ActiveSheet.Name = ProjectName
End If
Next ProjectName
End Sub
最佳答案
您可以使用 ProjectName.Row
获取具有项目名称的单元格的行并使用它来复制 Paste
中的范围床单。
Sheets("" & ProjectName & "").Range("A2:E2").Value = _
Sheets("Paste").Range( _
"F" & ProjectName.Row & ":" & "J" & ProjectName.Row).Value
关于vba - 设置一个 VBA 宏,它将为我的主工作表中的每一行信息创建一个新工作表并以某种格式布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24556042/