首页 > 解决方案 > VBA,为什么粘贴我的数组只粘贴一个单元格

问题描述

我将所有值放入一个数组中,我想将其粘贴到另一个工作簿中。这怎么行不通?它只是粘贴目标工作簿的单元格 A2。我必须选择整个范围来粘贴它吗?

根据这里的答案,答案只是粘贴到一个单元格。 将范围保存到变量

Dim src As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False

'Open CM comm file
Set MainDataCM = Workbooks.Open(Sheets("Input").Range("B3") & Sheets("Input").Range("B6"))

'Copy main data tab to EPM file workbook
With Sheets("Main Data")
lastrow = Sheets("Main Data").Range("A" & .Rows.Count).End(xlUp).Row
src = Sheets("Main Data").Range("A2:P" & lastrow).Value
End With
MainDataCM.Close SaveChanges:=False

'Paste into active workbook
Set MainDataCIB = Workbooks.Open(ThisWorkbook.Sheets("Input").Range("B3") & Sheets("Input").Range("B9"))
With Sheets("Main Data")
lastrow = Sheets("Main Data").Range("A" & .Rows.Count).End(xlUp).Row
Sheets("Main Data").Range("A2:P" & lastrow).ClearContents
MainDataCIB.Sheets("Main Data").Range("A2").Value = src
End With

标签: excelvba

解决方案


为了将数组输出到某个范围,您需要为其提供正确的输出尺寸。我发现做到这一点的最好方法是使用.Resize指定范围的属性。请参阅下面的代码。

MainDataCIB.Sheets("Main Data").Range("A2").Resize(UBound(src,1), UBound(src,2)).Value = src

这种方法将确保您为输出提供准确的尺寸。


推荐阅读