粘贴列时如何插入?

How to insert when pasting column?

在工作表中,我想使用按钮复制和粘贴列。

它应该复制两列并将它们插入到它能找到的第一个空闲列中。

例如 F 和 G。如果我再次按下按钮,它应该再次执行同样的操作,这次插入 H 和 I。

我的 VBA Active-X 按钮代码:

Private Sub CommandButton1_Click()
Columns("D:E").Copy
CommandButton1.TopLeftCell.EntireColumn.Insert
Application.CutCopyMode = False
End Sub

我在第一个空闲栏中粘贴什么。

TopLeftCell 为假。

在最后一列之后复制

  • 假设工作表没有被过滤。
Sub CopyToRight()
    
    Dim lcCell As Range
    Set lcCell = Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious)
    If lcCell Is Nothing Then Exit Sub
    
    Columns("D:E").Copy lcCell.EntireColumn.Offset(, 1)

End Sub
  • 在以下两个示例中,还假设没有隐藏单元格(行或列),并且每个工作表列的第一行包含数据。

在最后一列之后复制

Sub CopyAfterAll()
    With Columns("D:E")
        .Copy .Worksheet.Cells(1, .Worksheet.Columns.Count) _
            .End(xlToLeft).Offset(, 1)
    End With
End Sub

在最后一列之后插入

Sub InsertAfterAll()
    With Columns("D:E")
        .Copy
        .Worksheet.Cells(1, .Worksheet.Columns.Count).End(xlToLeft) _
            .Offset(, 1).EntireColumn.Insert
    End With
    Application.CutCopyMode = False
End Sub
  • 以下两个示例的结果是相同的(由于是整列),但有一点不同:如果取消注释 Debug.Print 行,您会注意到在 程序之后,范围保持 D:E,而在 Before 程序(可能是您的要求)中,范围变为 F:G.

之后插入
Sub InsertRightAfter()
    With Columns("D:E")
        .Copy
        .Offset(, .Columns.Count).Insert
        'Debug.Print .Address(0, 0) 
    End With
    Application.CutCopyMode = False
End Sub

之前插入
Sub InsertRightBefore()
    With Columns("D:E")
        .Copy
        .Insert
        'Debug.Print .Address(0, 0) 
    End With
    Application.CutCopyMode = False
End Sub