2017-03-09 108 views
0

當我按下Enter鍵時,我正在使用以下命令運行宏「SQL」。Excel VBA Application.OnKey

Private Sub Workbook_Open() 

Application.OnKey "~", "SQL" 

End Sub 

但是,我想只在列1(列A)時運行宏「SQL」。 一旦宏運行我的活動單元格在第9列(列I),我想運行第二個宏,當我按下列中的回車鍵?

我嘗試了以下,但宏「SQL」試圖運行列1和列9?

Private Sub Workbook_Open() 

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

End Sub 

任何人都可以幫助我嗎?

+1

你的意思是你想運行 「SQL」 按Enter鍵後在A列站立時,並運行「 SCAN_MEZBOX「當你站在列I上時按下Enter鍵?但在哪個工作表上?所有工作表?你是否有意使用「Workbook_Open」事件?或者不熟悉'Worksheet_Change'事件? –

+0

使用想要在更改/離開單元格後觸發的回車鍵的想法是什麼? – BruceWayne

回答

1

把你的 「聰明」 的SQL中的()宏:

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 
+0

當然...輝煌的,完美的作品。謝謝你,加里的學生! – SMORF

0

根據您在工作表中的位置,您應該編寫一箇中央例程,「調度」到適當的例程。

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