Excel VBA复制和粘贴单元格引用

我可以看到我的代码正在复制正确的单元格,但最终的粘贴不正确。

工作簿1-w要复制的单元格(“C5:E287”),但最终结果应粘贴在工作簿2(“H11:J293”)中 – 但结束粘贴S9:S285在第一列中,V9:V285在第二和W9:W285在第三。

不知道为什么,是否我的单元格引用错误

Sub CopyAndPaste() Dim wB As Workbook Dim wb2 As Workbook Dim ward As Worksheet Dim Data As Worksheet Set wB = Workbooks("a.xlsm") Set w = wB.Sheets("DATA") SourcePath = Workbooks("a.xlsm").Sheets("Front sheet").Range("AB1").Text SourceFile1 = Workbooks("a.xlsm").Sheets("Front sheet").Range("AA1").Text Set wb2 = Workbooks.Open(SourcePath & SourceFile1 & ".xlsm") Set Data = wb2.Sheets("DATA") bIsEmpty = False If w.Range("C2") = "3" Then w.Range("C5:E287").Copy Data.Range("H11:J293").PasteSpecial ElseIf wB.ward.Range("C2") = "5" Then bIsEmpty = True End If End Sub 

为什么使用.copy和.PasteSpecial?

指定范围值…

 Data.Range("H11:J293").Value = w.Range("C5:E287").Value 

你也可以通过从variables数组读取/写入来复制粘贴值:

 Dim Arr() As Variant Dim Destination As Range 'your code...... 'reads values to dynamically sied variant array Arr = w.Range("C5:E287") 'Sets left corner and size of range destination and fills it by Arr values. Set Destination = Data.Range("H11") Destination.Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr 

它具有读取数据的额外价值,可以在VBa内部数据结构中处理数据,并将结果写回电子表格,如果通常要快得多。 更多在无价的文章CPearsonarrays和范围