我可以看到我的代码正在复制正确的单元格,但最终的粘贴不正确。
练习册1 - 要复制的单元格(" 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
答案 0 :(得分:0)
为什么使用.copy和.PasteSpecial?
指定范围值...
Data.Range("H11:J293").Value = w.Range("C5:E287").Value
答案 1 :(得分:0)
也可以通过读取/写入变体数组来复制粘贴值:
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内部数据结构并将决赛写回电子表格,如果通常要快得多。 更多有用的文章https://jsfiddle.net/Pookool/k1qua683/1/