如何使用VBA触发某个功能键比如F9

请问怎么使用VBA,使Sheet1中某个单元格(比如B1)发生变化时,触动快捷键F9(系统设定F9调用了外部某个程序),并调用工作簿中某个宏(比如宏名为QA)... 请问怎么使用VBA,使Sheet1中某个单元格(比如B1)发生变化时,触动快捷键F9(系统设定F9调用了外部某个程序),并调用工作簿中某个宏(比如宏名为QA) 展开
 我来答
unsamesky
推荐于2017-12-16 · TA获得超过2735个赞
知道小有建树答主
回答量:859
采纳率:100%
帮助的人:433万
展开全部

可以使用SendKeys方法来按下F9按键。使用方法如下:

Private Sub Worksheet_Change(ByVal Target As Range)
    SendKeys "{F9}"
End Sub

 

SendKeys 方法


参阅参阅参阅参阅


将击键发送给活动应用程序。


expression.SendKeys(Keys, Wait)


expression      可选。该表达式返回一个 Application 对象。


Keys      Variant
类型,必需。要发送的键或者组合键,以文本方式表示。


Wait      Variant 类型,可选。如果该值为 True,则 Microsoft Excel 等待击键处理完后再将控制返回到宏;如果该值为 False(或者省略该参数),则宏继续执行而不等待击键处理完毕。


说明


本方法将击键放到键盘缓冲区。某些情况下,在调用要使用击键的方法之前必须先调用此方法。例如,若要往对话框中发送密码,则必须在显示对话框之前调用 SendKeys 方法。


Keys 参数可指定任何单个键或与 Alt、Ctrl 或 Shift
的组合键(或者这些键的组合)。每个键可用一个或多个字符表示。例如,"a" 表示字符 a,或者
"{ENTER}" 表示 Enter。


若要指定在按相应键时不会显示的字符(例如,Enter 或 Tab),请使用下表所列的代码来表示相应的键。表中的每个代码表示键盘上的一个键。



键                                 代码

Backspace      {BACKSPACE} or {BS}   

Break              {BREAK}    

Caps Lock       {CAPSLOCK}    

Clear              {CLEAR} 

Delete 或 Del   {DELETE} 或 {DEL}   

End    {END}    

Enter    ~(波形符) 

Enter(数字小键盘)   {ENTER}    

Esc    {ESCAPE} 或 {ESC}  

F1 到 F15    {F1} 到 {F15}    

Help    {HELP}    

Home    {HOME}    

Ins    {INSERT}    

Num Lock    {NUMLOCK}    

Page Down    {PGDN}    

Page Up    {PGUP}    

Return    {RETURN}    

Scroll Lock    {SCROLLLOCK}    

Tab    {TAB}    

向上键    {UP}    

向下键    {DOWN}    

向右键    {RIGHT}    

向左键    {LEFT}    


也可指定与 Shift 和/或 Ctrl 和/或 Alt 组合使用的键。要指定与其他键组合使用的键,请使用下表。


要组合的键


在键代码之前添加

Shift    +(加号) 

Ctrl      ^(乘幂) 

Alt      %(百分号) 

   

示例

本示例使用 SendKeys 方法退出 Microsoft Excel。

Application.SendKeys("%fx")

追问
为什么这段代码不能触发F9调用外部程序呢?
追答
那你直接在下面加入一行语句
CALL QA

即可啊!
姓王的wy451

推荐于2016-07-20 · TA获得超过48.3万个赞
知道大有可为答主
回答量:8万
采纳率:78%
帮助的人:8862万
展开全部

下面代码能满足你的要求,以附件为证。有问题请联系

Private Sub Worksheet_Change(ByVal Target As Range)

   If Not Intersect(Target, [B1]) Is Nothing Then '如果修改的单元格是B1的内容

      MsgBox "点击确定后程序将帮你按下F9键"

      SendKeys "{F9}" '按下F9

      Call QA '运行宏QA

   End If

End Sub


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lgf126
2013-08-07 · TA获得超过1101个赞
知道小有建树答主
回答量:1077
采纳率:33%
帮助的人:465万
展开全部
'以下是当B1发生改变时,自动运行以下程序,将下面的代码复制到,所在的工作表。
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Then
        call QA
    end if
End Sub 
'QA过程最好连着放到下面,如果不放到下面,call QA改成QA所在的位置.
'比如QA在模块1: call 模块1.QA

sub QA
'你的程序代码
end sub
追问
假如改变的不只是B1,而是介于B1到D12的范围内的任意一个或多个单元格改变,请问代码应该如何写呢?另外好像调用QA,不需要用call,直接QA就行,是不是?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仙剑4之处
2013-08-06 · TA获得超过397个赞
知道小有建树答主
回答量:1269
采纳率:25%
帮助的人:229万
展开全部
在sheet1中可以设定吧,用change属性吧。可以试试,我没试过
追问
不好意思,我需要的是一段完整的VBA代码,不是公式或者设定,而是希望其能自动触发,还是谢谢你的建议
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式