粘贴列时如何插入?
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
在工作表中,我想使用按钮复制和粘贴列。
它应该复制两列并将它们插入到它能找到的第一个空闲列中。
例如 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