我有一个Excel 2007表单,用户将一些数据输入到文本框中,如果他们单击“确定”命令按钮,则会根据该文本运行宏。但是,如果他们从其他地方复制一个字符串(例如Ctrl + C
),然后第一次粘贴并按OK,则复制缓冲区似乎被清除;如果他们再次尝试再次粘贴,没有任何反应。但是,如果他们单击“取消”命令按钮,则会保留其第二次+粘贴功能。在OK单击上运行的宏非常简单:它创建一个新工作表,从数据库插入一些数据,并对其执行一些循环检查,所以我不认为任何一个VBA方法将清除复制缓冲区。我唯一能想到的是.Select
它在一个点上使用然后设置.PrintArea
,但不应该有任何复制/粘贴效果,因为它不会复制/粘贴所选数据因为所有这些都是通过Cells(row, col) = Cells(row, col)
语法完成的。此外,当我有剪贴板面板时,它不会擦除任何东西;参赛作品仍在那里。
在执行链接到命令按钮/文本框的宏之后,Excel 2007是否只是执行复制缓冲区的错误,或者是否存在可能导致问题的问题?如果它是一个错误,是否有一种方法可以将用户最初输入的字符串放回Ctrl + C
?
答案 0 :(得分:0)
我发现了这个问题。我没有调查所调用的宏的每一个子,因为它们中有很多,其中大部分都显得微不足道。然而,其中一个看似微不足道的有一个Selection.Copy
,如果我设置断点,复制缓冲区将被清除并设置为选择。
虽然由于选择过程的复杂性,我无法将此子更改为不使用选择,但我能够在宏的末尾附加一个子,该子接收原始宏输入并执行以下操作: / p>
Sub InputToCopyBuffer (someInputVar As String)
Dim clipboard As MSForms.DataObject
Set clipboard = New MSForms.DataObject
clipboard.SetText someInputVar
clipboard.PutInClipboard
End Sub