我在开发用于创建多个工作表的代码时遇到问题,而工作表名称是从其他工作表的列表中获取的,然后在创建的工作表中,需要从表中更新一些字段。我的意思是首先创建工作表,从主工作表单元格A1(例如)复制的值,以及下一个创建的工作表,从主工作表单元格A2复制的值,直到结束。
我开发了代码,直到它成功复制它,但我不知道如何从表中替换单元格值。
我不知道它有多么具有挑战性,但任何帮助都会受到高度赞赏。
由于 萨拉
我当前的代码
Sub create_sheets()
Dim MyCell As Range, MyRange As Range
Set MyRange = Sheets("input data").Range("C6")
Set MyRange = Range(MyRange, MyRange.End(xlToRight))
For Each MyCell In MyRange
Sheets("200L_50°C").Copy After:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
Next MyCell
End Sub
答案 0 :(得分:0)
首先,这个
Set MyRange = Sheets("input data").Range("C6")
Set MyRange = Range(MyRange, MyRange.End(xlToRight))
可以在一行中完成:
Set MyRange = Range(Cells(6, 3), Cells(6, 3).End(xlToRight))
还要考虑更强大的版本:
Set MyRange = Range(Cells(6, 3), Cells(6, Columns.Count).End(xlToLeft))
解决了这个问题后,为了创建工作表,我宁愿使用.Add
方法:
Dim i As Long: i = 1
For Each MyCell in MyRange
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = MyCell.Value
'copy the value from main Worksheet - from A1, A2, etc.
'to A1 in new worksheet - it remains first sheet I assume
Sheets(Sheets.Count).Cells(1, 1).Value = Sheets(1).Cells(i, 1).Value
i = i + 1
Next MyCell
此外,使用Sheet(1)
是不必要的,因为我们不会激活或选择任何其他工作表。