在VBA中测下SENDKEYS的用法,发现了个问题:
for i=2 to 3         
         Worksheets("Sheet1").Cells(5, 6).Select
         SendKeys Worksheets("Sheet2").Cells(i, 21)
昨天运行时出现的问题是他发送的数值不是发送在我要的 Worksheets("Sheet1").Cells(5, 6)里面,而是在VBA里,晕吧
昨天有事,今天再来运行一下,总是又不一样了,发送的位置倒是对了,就是他发送了二次数据到 Worksheets("Sheet1").Cells(5, 6)里,且数据不是最后的Worksheets("Sheet2").Cells(3, 21)的二次重复,而是Worksheets("Sheet2").Cells(2, 21)+Worksheets("Sheet2").Cells(3, 21),换四次循环,这次是发送了四次数据到表sheet1里,没门,又换了下语句:
        Worksheets("Sheet1").Cells(5, 6).Select
        Worksheets("Sheet1").Cells(5, 6) = ""
        SendKeys Worksheets("Sheet2").Cells(i, 21)
还是出现上述情况,先清空要输入数据的单元格也不中,这是什么问题??

解决方案 »

  1.   

    SendKeys 语句将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。
    将完整代码贴出来看看。
      

  2.   

    代码很简单,在VBA中:
    for i=2 to 3
            Worksheets("Sheet1").Cells(1, 2)=Worksheets("Sheet2").Cells(i, 2)
            Worksheets("Sheet1").Cells(1, 4)=Worksheets("Sheet2").Cells(i, 6)
    .......................全是以上内容的代码,以前使用完全正确,为了试下SENDKEYS能不能从EXCELL的表中提取数据再发送,我就把后面的等待和打印的命令全注释了,再加上这二句:
        Worksheets("Sheet1").Cells(5, 6).Select
            SendKeys Worksheets("Sheet2").Cells(i, 21) 
    结果就出现上诉问题了
    有点儿不可思议啊
      

  3.   

    用这个:
    Sub sndkeys()
        Worksheets("Sheet1").Activate
        For i = 2 To 3
            Worksheets("Sheet1").Cells(5, 6).Select
            SendKeys Worksheets("Sheet2").Cells(i, 21) & "~{UP}"
        Next i
    End Sub
      

  4.   

    改成这样更好:
    Sub sndkeys()
        Worksheets("Sheet1").Activate
        Worksheets("Sheet1").Cells(5, 6).Select
        For i = 2 To 3
            SendKeys Worksheets("Sheet2").Cells(i, 21) & "~{UP}"
        Next i
    End Sub
      

  5.   

    SendKeys 语句 将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。
    注意这几个字:
    “活动窗口”
      

  6.   

    OK,一切正常了!谢谢,不过我想问下:
    & "~{UP}"
    为什么要加个回车和上翻键,用意是什么?
      

  7.   

    SendKeys是把一串数据放入“活动”窗口的键盘缓冲区,然后目标窗口的处理程序会从缓冲区依次取出数据(作为按键数据)进行处理。也就是说,SendKeys是在模拟按键操作。