2

我正在寻找一种方法来从其他工作簿复制一个范围(copyrange 存在于 11 列和各种行中),并仅在我的主工作簿中,在已经存在的数据下方插入/粘贴值。

只是粘贴没有问题,但是因为我不希望它覆盖最后一个(SUM-)行,所以我想插入这些值。据我所知,没有像 InsertSpecial xlInsertValues 这样的东西。

那么如何根据复制范围的计数行插入整个空行,而不是将值仅粘贴到“E”到“O”列中?

一些先决条件是:

  • copyrange 存在于 11 列和各种行中
  • 我试图避免在两个文档之间切换两次。所以我只想打开 extern 工作簿,复制值,打开我的主工作簿,然后在范围内左右插入带有空白单元格的复制数据。

这就是我到目前为止所得到的。插入部分都出错了,因为它不仅仅粘贴/插入值。请注意,它只是更大代码的一部分。Rng31 是外部工作簿中的复制范围。

        Dim Rng31 As Range
        Set Rng31 = Rng21.Resize(Rng21.Rows.Count, Rng21.Columns.Count + 10)
        Dim regels As Integer
        regels = Rng31.Rows.Count
        Rng31.Copy

        Wbbase.Activate
        Sheets(2).Activate
        Dim onderste As Range
        Set onderste = Range("E65536").End(xlUp).Offset(1, 0)
        onderste.Insert shift:=xlDown
        Selection.PasteSpecial xlPasteValues
4

2 回答 2

2
...
InsertValues Rng21.Resize(Rng21.Rows.Count, Rng21.Columns.Count + 10), _
             Wbbase.Sheets(2).Range("E65536").End(xlUp).Offset(1, 0)
...           




Sub InsertValues(rngCopyFrom As Range, rngCopyTo As Range)
    Dim rngDest As Range
    Set rngDest = rngCopyTo.Resize(rngCopyFrom.Rows.Count, _
                                   rngCopyFrom.Columns.Count)
    Application.CutCopyMode = False 'Edit Added:clear any copied data
    rngDest.Insert shift:=xlDown
    rngDest.Offset(-rngCopyFrom.Rows.Count).Value = rngCopyFrom.Value
End Sub
于 2013-08-02T16:05:03.830 回答
0

问题是,如果您复制了一个单元格(即它在剪贴板上),您不能简单地“插入新行”,因为唯一的选择是“插入复制的单元格”,因此onderste.Insert将插入复制的单元格并保留公式。此外,您然后调用Selection.PasteSpecial我认为不是您想要的,因为您从未在代码帖子中的任何位置设置您的选择,因此您之前选择的任何内容都将包含该值。

你有几个选择:

  1. 您可以先插入行,然后复制并粘贴单元格值(这需要在工作簿之间来回切换)
  2. 复制单元格,插入新行(这就是您正在执行的操作),然后清除该行并粘贴值。

作为旁注:

Range("E65536").End(xlUp).Offset(1, 0)

最好表述为

Range("E" & Rows.Count).End(xlUp).Offset(1, 0)

于 2013-08-02T16:09:54.423 回答