我写了以下代码。它应循环选择一张工作表,然后在每张工作表中添加列。
Sub test()
Dim month As Variant
Dim months As Variant
months = Array("07 AMSTERDAM", "07 ARNHEM")
For Each month In months
Columns("L:L").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
range("L3").Value = "CALC"
Columns("O:O").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
range("O3").Value = "CALC"
Next month
End Sub
但是,当我运行代码时,它会在months
的每个工作表中添加一列,但它也会在第一个选项卡(07 AMSTERDAM
)中添加两次列。
有关这里出了什么问题以及如何实现目标的任何想法?
答案 0 :(得分:2)
您没有选择合适的表格。
Sub test()
Dim month As Variant
Dim months As Variant
months = Array("07 AMSTERDAM", "07 ARNHEM")
For Each month In months
Sheets(month).activate
Columns("L:L").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
range("L3").Value = "CALC"
Columns("O:O").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
range("O3").Value = "CALC"
Next month
End Sub
答案 1 :(得分:1)
您正在循环字符串值,而不是工作表对象。使用Sheets
集合根据名称选择正确的工作表。
For Each month In months
With Sheets(month)
.Columns("L:L").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.range("L3").Value = "CALC"
.Columns("O:O").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.range("O3").Value = "CALC"
End With
Next