这里是VBA新手。我有一个复杂的电子表格,但我会针对我的问题对其进行简化。假设我有一本包含 20 个工作表的工作簿。 每个工作表都有一个三个字母的名称,例如
ABC
。在第一个工作表中,单元格 CITIES
中有一个名为 A1:A10
的范围。 CITIES
中的每个单元格都有一个城市的名称。此外,在第一个工作表的单元格 B1:B10
中,还有 10 个工作表名称的列表。我定期更改此列表。我需要一个宏将范围 CITIES
复制到 C1
中列出的每个工作表的单元格 B1:B10
中。
使用我的宏(如下所示),每次在
B1:B10
列表中进行更改时,我都必须更改宏中的工作表名称。我希望宏使用 B1:B10
列表来确定要复制到哪些工作表。
预先感谢您提供的任何帮助。
Sub CITIES_COPY ()
Range("CITIES").Select
Selection.Copy
Sheets(Array("ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VWX", "YZA", "BCD")). _
Select
Sheets("ABC").Activate
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
End Sub
将此代码放入第一个工作表代码模块(数据所在的位置) 这些范围是硬编码的,因此必须记住这一点。例如。如果工作表少于 10 个,则会出现缺少名称的错误;如果工作表大于 10 个,则超过 10 个的工作表将被忽略。 “A1:A10”可以更改为命名范围。
Sub mulcopy()
Range("A1:A10").Copy
For i = 1 To 10
shnames = Cells(i, "B")
Application.Worksheets(shnames).Range("C1").PasteSpecial xlPasteAll
Next i
End Sub