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

时间:2017-11-06 10:25:31

标签: excel vba excel-vba

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

练习册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

2 个答案:

答案 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/