我正在尝试创建一个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。
我该如何解决这个问题?
答案 0 :(得分:4)
因为行Columns("D:D").Select
而发生。如果你不选择这个列,代码就可以正常工作。
改为使用这个:
With Range("D:D")
.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End With
答案 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。
因此,请确保您的选择中没有合并的单元格。