在excel中添加列

时间:2014-03-07 19:48:41

标签: excel vba excel-vba

我正在尝试创建一个excel宏,它会在列D之前自动插入两列... 我创建它时程序运行正常,这里是:

Sub AddColumns()
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

但是当我打开我的工作表并试用它时,我的所有数据都被推到右边大约11列,并插入了11个空白列。我确定这必须与一些有11列合并的行。 Select语句选择前11列A-K。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

因为行Columns("D:D").Select而发生。如果你不选择这个列,代码就可以正常工作。

改为使用这个:

With Range("D:D")
    .Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    .Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End With

而且,How to avoid using Select/Active statements:)

答案 1 :(得分:2)

您不使用select来执行此操作

Sub AddColumns()
    Columns("D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

答案 2 :(得分:1)

如果选择包含合并单元格的列,则选择将扩展到与这些合并单元格相交的所有列。在您的情况下,选择了11列。

此外,Selection.Insert插入多列选择:Voila。

因此,请确保您的选择中没有合并的单元格。