在现有列之后,我有复制粘贴范围的代码。还需要能够在现有的列之间使用。因此,它将粘贴复制的范围后,右下一个选定的单元格。这里的问题是不可能使用"Insert“来添加更多的列。因此,现有的数据应该以某种方式向右移动。通过复制粘贴?这是唯一的解决方案吗?技术上是如何做到的?
因此,如果我选择合并的单元格H:I并点击ADD,代码将把J:K和L:M移动到右边,并将复制的范围粘贴到J:K最近出现的位置。
我当前添加按钮的代码是:
Sub CopyPasteTurbineOwnWork()
Application.ScreenUpdating = False
Dim StartRange As Range
Dim cello As Range
Set cello = Worksheets("Price calculation").Cells(13, Columns.Count)
Set StartRange = Worksheets("Price calculation").Range("D13")
StartRange.MergeArea.Copy
cello.End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteAll
StartRange.Offset(1, 0).Resize(16, 2).Copy
cello.End(xlToLeft).Offset(1, 0).PasteSpecial xlPasteAll
StartRange.Offset(17, 0).MergeArea.Copy
cello.End(xlToLeft).Offset(17, 0).PasteSpecial xlPasteAll
StartRange.Offset(18, 0).Resize(2, 2).Copy
cello.End(xlToLeft).Offset(18, 0).PasteSpecial xlPasteAll
StartRange.Offset(148, 0).MergeArea.Copy
cello.End(xlToLeft).Offset(148, 0).PasteSpecial xlPasteAll
StartRange.Offset(149, 0).Resize(5, 2).Copy
cello.End(xlToLeft).Offset(149, 0).PasteSpecial xlPasteAll
Set StartRange = Nothing
Set pasteSheet = Nothing
Set cello = Nothing
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
发布于 2019-11-01 03:56:17
正如您所述,您希望插入所选列的整个列,但这并不像选择该列那么容易,因为您使用的是2对合并列。但是,与其逐列复制整个范围,如果您使复制选择正确,您仍然可以复制.Insert
。即使您希望插入两个大型合并单元格,只要它们与行的其余部分大小相同,插入也会工作:
下面将调整复制区域的大小(从D13开始),以包括两列,以及所选单元格以下的合并单元格的全部计数(加上D13行)。然后,它将复制整个区域并将其插入所选内容的右侧。只要选择单元格的大小与您选择的右边相同,就可以插入,而无需移动文档的其余部分。
Sub insert_column()
Range("D13").Resize((Selection.Offset(1, 0).MergeArea.Rows.Count) + 1, 2).Copy
Selection.Offset(0, 1).insert shift:=xlToRight
End Sub
https://stackoverflow.com/questions/58658299
复制