Excel VBA – 如何只插入值?

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

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

那么如何根据复制范围的计数行插入整个空行,然后只将这些值粘贴到列“E”到“O”中?

一些先决条件是:

  • 复制范围从11列和各种行存在
  • 我试图避免在两个文件之间切换两次。 因此,我只想打开外部工作簿,复制值,打开我的主要工作簿,并将范围内的空白单元格左侧和右侧的复制数据插入。

这是我到目前为止。 它在插入部分都是错误的,因为它不会粘贴/插入值。 请注意,这只是更大代码的一部分。 Rng31是extern工作簿中的复制范围。

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 

 ... 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 

问题是,如果你有一个单元格复制(即它在剪贴板上),你不能简单地“插入一个新的行”,因为唯一的select是“插入复制的单元格”,因此onderste.Insert将插入复制的单元格,并保持式。 此外,你再调用Selection.PasteSpecial ,我不认为是你想要的,因为你从来没有在你的代码中任何地方设置你的select,所以你之前select的是什么将包含的价值。

你有几个select:

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

作为一个方面说明:

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

会更好地表述为

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