vba等待并响应键盘输入

subx()AppActivate2348,True‘是我目标程序PIDSendKeys"a",TrueSendKeys"{enter}",True’此时目标程序出现我要... sub x()
AppActivate 2348, True‘是我目标程序PID
SendKeys "a", True
SendKeys "{enter}", True’此时目标程序出现我要的信息,我希望根据此信息,敲击键盘1或2或3……然后vba会自动的在我的Sheet1的E1单元格输入“一”或“二”或“三”……
'在此加入代码,使vba程序暂停,等待键盘响应,键盘不输入就一直暂停,键盘一输入就立即反应。
'加入代码,判断键盘输入,如果键盘输入1,则在工作薄E1单元格中写入“一”(键盘输入2,则写“二”;键盘输入3,则写“三”;……)
ThisWorkbook.Sheets("Sheet1").Range("e1").Value = "一"
end sub
望哪位高手帮我完善上述代码,实现以下功能:程序暂停等待键盘响应——响应键盘输入——判断键盘输入——根据输入信息在E1中写入相应内容。
展开
 我来答
lgf126
2014-06-18 · TA获得超过1101个赞
知道小有建树答主
回答量:1077
采纳率:33%
帮助的人:469万
展开全部
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Long
‘上面这句请放到程序开头处,对API函数的引用
Do
For Cnt = 48 To 105
If GetAsyncKeyState(Cnt) = -32767 Then '得到按键盘状态
tstr = Chr(Cnt)
End If
Next
Loop While Not IsNumeric(tstr) Or tstr = ""
cn = Array("一", " 二", "三", "四", "五", "六", "七", "八", "九")
Range("E1") = cn(CInt(tstr) - 1)

好像你上次问过类似的,记得上次你是想用鼠标选择一二三之类的数字,复制过来!
这次怎么变成一个一个输入???而且只用记录一个数么???
上面的代码可以修改成一次输入多个键值,按回车,直接把一串字填充
追问
但对键盘右侧的数字区按键没反应。是啊,你记性真好……但是后来才发现那个“一二三”是无法选择复制的。“一二三”其实代表销售人姓名,有几百上千张销售清单,本来我想全自动的提取销售人员(多一个按键就多很多工作量)。发现不能复制后,我曾想,把“一二三”这个小矩形截图下来(这个字位置、字体、字号固定,白底黑字,内容即姓名只有5个),读出文字内容,这个好像办不到吧。不知你有没办法,能够实现全自动。
yfliang55555
2014-06-17
知道答主
回答量:2
采纳率:0%
帮助的人:2701
展开全部
不用太复杂,
直接写一个 inputbox 就好三,
追问
请你按照我的题意解答,而不是答非所问。inputbox是最最基本的,谁都会用,但达不到我需要的效果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式