VBA SendKey事件发生乱序

我正在写一个简单的脚本来手动复制和粘贴单元格值。 我知道我可以通过其他方式做到这一点,但我想使用SendKeys。

这里是我的脚本复制单元格A1到A2:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub my_copy() Range("A1").Select SendKeys "^c" Sleep 10 Range("A2").Select SendKeys "~" Sleep 10 End Sub 

我似乎无法弄清楚如何纠正我遇到的问题。 它select单元格A1,然后等待,然后A2,然后复制和粘贴。 (而不是selectA1后复制)

我在这里错过了什么?

为什么不:

 Range("A2") = Range("A1") 

A2是A1的副本。 如果你想使用sendkeys,我会这样做:

 Range("A1").Select SendKeys "^c", True Range("A2").Select SendKeys "^V", True 'I'm a Windows user 

真正意味着等待,但这是Excel VBA的格式。

icebird76是正确的,但是你仍然可以使用你的“〜”发送一个“Enter”。 这意味着您不会将Cell A1选为复制的单元格。

 Range("A1").Select SendKeys "^c", True Range("A2").Select SendKeys "~", True 

关于SendKeys声明如何工作的更多信息以及“True”的要求,请参阅https://msdn.microsoft.com/en-us/library/office/gg278655.aspx