插入列不按预期工作

时间:2017-06-24 18:23:54

标签: excel vba insert

我试图在“Z”列之后插入一些列,使用Z列格式但是它会将列插入错误的部分(第二张图片):

First Picture

Second Picture

这是我正在使用的代码:`

        For i = 1 To Quantity - 1

            Columns("Z:Z").Select
            Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Next`

数量的价值由用户在文本框中给出。 谁能帮我? 谢谢

2 个答案:

答案 0 :(得分:1)

使用以下内容:

For i = 1 To quantity - 1

    Columns("Z:Z").Select
    ActiveCell.EntireColumn.Offset(0, 1).Insert , CopyOrigin:=xlFormatFromLeftOrAbove

Next  

偏移将向右插入列 Excel通常将列插入选择的左侧 使用您的代码,您可以使用:

For i = 1 To Quantity - 1

            Columns("AA:AA").Select
            Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Next  

答案 1 :(得分:1)

我尝试了你的代码,它完全符合你的要求

有可能某些其他代码正在运行,而不是此代码

调整窗口大小以便您可以看到工作表

然后按F8键

单步执行以下代码

您的代码可以重写如下:

注意:您无需“选择”Z列以对其执行操作

Sub Macro1()
    For i = 1 To 5
        Columns("Z:Z").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Next
End Sub


' you can also do multiples of columns with one command


Sub Macro1()

    Quantity = 3

    ' insert multiple columns
    Range("z:z").Range(Columns(1), Columns(Quantity)).Select  ' multi column range anchored at column "Z"
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

    ' or this way on one line without selecting
    Range("z:z").Range(Columns(1), Columns(Quantity)).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

    ' or this way
    Range("z:z").Range(Columns(1), Columns(Quantity)).Insert _
        Shift:=xlToRight, _
        CopyOrigin:=xlFormatFromLeftOrAbove

    ' or this way
    With Range("z:z").Range(Columns(1), Columns(Quantity))
        .Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    End With

End Sub

希望有所帮助