我有一个VBA脚本,它结合了一堆Excel文件中的数据,并整齐地呈现结果。 它通过打开输入文件,复制所需的数据范围并将其粘贴到结果文件中来重复执行此操作。
我们刚刚升级到Office 2013,有些贴片会转到错误的位置,例如:
Workbooks(currentBook).Sheets("InputList").Range("E1:F1000").Copy
ThisWorkbook.Sheets("Results").Range("B2").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
不粘贴到单元格B2,而是粘贴到J1。
另一个复制粘贴操作应该给出:
Location Date Value
Location Date Value
Location Date Value
执行此代码:
Workbooks(currentBook).Sheets("Pay").Range("B1:B2").Copy
ThisWorkbook.Sheets("Problem Sheets").Range("E1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
ThisWorkbook.Sheets("Problem Sheets").Range("E1:E2").Copy
ThisWorkbook.Sheets("Problem Sheets").Range("A" & problemCell).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True
ThisWorkbook.Sheets("Problem Sheets").Range("E1:E2").ClearContents
problemCell = problemCell + 1
取而代之的是:
Location Location Value
Location Location Value
Blank Blank Value
我非常感谢理解和处理此行为的任何帮助 - 我需要能够信任此文件中的结果,而在Office 2010中我可以!
答案 0 :(得分:1)
替换:
ThisWorkbook.Sheets("Results").Cells("B2").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
与
ThisWorkbook.Sheets("Results").Range("B2").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
等
答案 1 :(得分:0)
可以通过循环遍历所需范围来纠正此问题,将每个目标单元格的值指定为等于原始单元格的值,如下所示:
For copyCount = 1 To 1000
ThisWorkbook.Sheets("Pay").Cells(copyCount + 1, 2).Value = _
Workbooks(currentBook).Sheets("Employee List").Cells(copyCount, 5).Value
ThisWorkbook.Sheets("Pay").Cells(copyCount + 1, 3).Value = _
Workbooks(currentBook).Sheets("Employee List").Cells(copyCount, 6).Value
ThisWorkbook.Sheets("Pay").Cells(copyCount + 1, 1).Value = _
Workbooks(currentBook).Sheets("Employee List").Cells(copyCount, 7).Value
Next
虽然这可以解决复制和粘贴功能遇到的问题,但它并不能解释错误的来源,因此我仍然对与此相关的任何答案感兴趣。