2013-11-05 14 views
0

按下2個的特定按鍵,我不知道這是可能的。我正在使用Excel並使用VB腳本。有沒有辦法檢測兩個按鍵是否同時按下以及它們是哪一個?那麼如果是那些被按下的鍵,我可以使用If/Then語句來執行我需要做的任何過程?Excel中 - 如果檢測一次

我知道,如果我有像一個組合框,我可以使用的keydown功能可以檢測按下一個鍵,但這隻會在一個關鍵的工作,而不是兩個鍵。另外,我不使用組合框,文本框或其他任何東西。我嚴格使用細胞,所以似乎沒有像keydown那樣檢測甚至按下單個鍵的情況。

同樣,我需要爲它在同一時間被壓檢測兩個鍵。我也是會以某種方式把它要在工作簿水平,以及其檢測出來,而不是每一個人的工作表,因爲有幾個工作表,並希望這些按鍵的工作由一個片到下一個。

請讓我知道這是可能的,或沒有,但我有一種感覺是不可能的。

+0

你看過VBA'OnKey'函數嗎?它可以用Ctrl,Shift和其他類似「A」這樣的「常規」按鍵的方式工作。 –

+0

謝謝,這似乎是一個很好的開始,並且我沒有嘗試過使用它。我正在查找關於它的信息。問題是,我不知道在哪裏放置onkey事件。似乎沒有任何選項會在按鍵時觸發此選項。我已經在它旁邊放置了一個標記,所以當代碼運行時,它將在這個標記處暫停,但是當我按下按鍵時,沒有任何東西會觸發它。我通過在Visual Studio中創建的附加內容來查看人們在Excel中使用這些文章的文章,但我需要弄清楚如何在不使用附加的情況下直接在Excel中執行此操作。 – Chris

+0

我弄明白了,謝謝。我必須將「onkey」命令放在ThisWorkbook下面,以便在打開時顯示。所以我會把它放在「Private Sub Workbook_Open()」中。然後,我需要在ThisWorkbook下創建一個子例程並將其引用到此例程中。要運行onkey例程,請確保指定「ThisWorkbook.Routine」,其中「例程」是新子類別的名稱。否則,你可以創建一個模塊,無論你怎麼稱爲Sub,那麼你都不會指定「ThisWorkbook.Routine」,只需指定「Routine」即可。雖然我不想使用模塊。感謝您讓我知道onkey! – Chris

回答

2

道格,

感謝您的建議,我因該想通一切的。在這裏,如果有人認爲這有用:

 
    Private Sub Workbook_Activate() 

    'When the workbook is active this will run the script in the place of the standard Ctrl + C. 
    Application.onkey "^{c}", "ThisWorkbook.cCopy" 

    End Sub 


    Private Sub Workbook_Deactivate() 

    'When another workbook is active this will disable this script so the standard Ctrl + C will work again. 
    Application.onkey "^{c}" 

    End Sub 


    Sub cCopy() 

    'This is the script to run when active. This was used for testing purposes only. 
    Worksheets("Sites").Range("I1").Value2 = "Yes" 

    End Sub
+0

你走了。好工作計算出來。 +1 –