VBA SendKey事件发生故障

时间:2015-04-08 21:25:12

标签: excel vba excel-vba

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

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

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:2)

为什么不:

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的格式。

答案 1 :(得分:0)

icebird76是正确的,但您仍然可以使用“〜”发送“输入”。这意味着您不会将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