Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在excel中添加列_Vba_Excel - Fatal编程技术网

Vba 在excel中添加列

Vba 在excel中添加列,vba,excel,Vba,Excel,我正在尝试创建一个excel宏,它会自动在列D之前插入两列。。。 我创建该程序时,该程序运行良好,如下所示: Sub AddColumns() Columns("D:D").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove En

我正在尝试创建一个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


如何修复此问题?

由于行
列(“D:D”)的原因而发生此问题。请选择
。如果不选择此列,则代码可以正常工作

改用这个:

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

而且,:)

您不需要使用select来执行此操作

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

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

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


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

顺便说一句,是否使用选择并不重要。只要看那些合并的单元格。谢谢-这就解决了它!