Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA应用程序.OnKey_Vba_Excel - Fatal编程技术网

Excel VBA应用程序.OnKey

Excel VBA应用程序.OnKey,vba,excel,Vba,Excel,按下enter键时,我正在使用以下命令运行宏SQL Private Sub Workbook_Open() Application.OnKey "~", "SQL" End Sub 但是,我只希望在第1列A中运行宏SQL。 宏运行后,我的活动单元格位于第9列第I列,我想在按下该列中的enter键时运行第二个宏 我尝试了以下操作,但是宏SQL试图同时为列1和列9运行 Private Sub Workbook_Open() If ActiveCell.Column = 1 Then

按下enter键时,我正在使用以下命令运行宏SQL

Private Sub Workbook_Open()

Application.OnKey "~", "SQL"

End Sub
但是,我只希望在第1列A中运行宏SQL。 宏运行后,我的活动单元格位于第9列第I列,我想在按下该列中的enter键时运行第二个宏

我尝试了以下操作,但是宏SQL试图同时为列1和列9运行

Private Sub Workbook_Open()

If ActiveCell.Column = 1 Then    
    Application.OnKey "~", "SQL"    
Else    
    Application.OnKey "~", "SCAN_MEZBOX"    
End If

End Sub

有人能帮我吗?

您应该编写一个中心例程,根据您在工作表中的位置分配到相应的例程

Private Sub Workbook_Open()
    Application.OnKey "~", "Dispatch"
End Sub

Private Sub Dispacth()
    Select Case ActiveCell.Column
         Case 1
             SQL
         Case 9
             SCAN_MEZBOX
         ' Add other cases if necessary
         Case Else
    End Select
End Sub

将smarts放入SQL宏中:


您的意思是当您站在A列上按enter键时要运行SQL,当您站在I列上按enter键时要运行SCAN_MEZBOX吗?但是在哪张工作表上?所有的工作表?你是故意把它放在公开活动上的吗?或者不熟悉工作表\u更改事件?使用更改/离开单元格后要触发的enter键的想法是什么?当然。。。太棒了,很好用。谢谢加里的学生!
Sub SQL()
    Dim C As Long
    C = ActiveCell.Column

    If C = 1 Then
        'do something
    ElseIf C = 9 Then
        'do something else
    Else
        Exit Sub
    End If
End Sub