我有一个程序,复制一系列单元格,并需要将内容粘贴到代码中创建的新工作簿中 . 我可以复制数据,但每当我将工作簿更改为新创建的工作簿时,剪贴板就会丢失其数据 . 我考虑将单元格复制到一个数组,然后只是将数组复制到新的工作簿,但我不知道在编码时数组的大小,这几乎每次宏运行时都会有所不同 . 当我更改活动工作簿时,如何将数据保留在剪贴板上?
cell = "k7: l" & row
Worksheets(1).Range(cell).Select
Selection.Copy
relpath = ThisWorkbook.Path & "\" & "DispersionList.xls"
If Dir(relpath) <> "" Then
Application.Workbooks.Open (relpath)
Workbooks("DispersionList.xls").Activate
Else
Call createWorkbook
End If
Worksheets(1).Cells(7, 14).Select
Selection.PasteSpecial
End Sub
如果我逐行遍历代码并检查剪贴板,它会在workbooks.open行丢失其内容
1 回答
Excel / VBA中有一些操作会使选择/剪贴板无效,例如:更改任何窗口/显示设置 . 因此,我怀疑在更改工作表/工作簿时会调用某个事件 .
您可以调试它,同时逐步执行代码计算,当选择无效时,避免使用此语句(如果可能) .
或者,在事件代码中使用以下代码中的
subStoreClipboard
和subRestoreClipboard
. 要使用该代码,请将其插入工作表中的新模块中 - 并在VBA中插入名为"ws_Temp"的新(隐藏)工作表 .