在Excel中添加列

我想创build一个自动插入列D之前的两列的Excelmacros…当我创build它时,过程工作正常,在这里:

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

但是,当我打开我的工作表,并尝试了,我所有的数据被推到右边大约11列和插入11个空白列。 我敢肯定,这有一些行合并了11列。 Select语句select前面的11列AK。

我该如何解决?

这是因为Columns("D:D").Select 。 如果你不select这个列代码将工作正常。

改用这个:

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

而且, 如何避免使用Select / Active语句 🙂

你不用select来做到这一点

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

如果select包含合并单元格的列,则选定内容将展开到与这些合并单元格相交的所有列。 在你的情况下,select11列。

此外,Selection.Insert插入尽可能多的列select:瞧。

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