将列粘贴到多张纸中

时间:2015-08-24 12:49:26

标签: vba excel-vba excel

我写了以下代码。它应循环选择一张工作表,然后在每张工作表中添加列。

  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)中添加两次列。

有关这里出了什么问题以及如何实现目标的任何想法?

2 个答案:

答案 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