2016-02-16 29 views
3

我已經複製並稍微修改了this post底部的代碼,以允許在我創建的工作表窗體上的窗體控件之間切換。下面是有關的鍵碼= vbKeyEnter段:輸入密鑰模擬點擊不起作用的複選框

Select Case KeyCode 
Case vbKeyTab 
    Dim Backward As Boolean 
    Backward = (Shift And fmShiftMask) 

    Call MoveFocus(Cntrl:=Cntrl, TabIndex:=TabIndex, Backward:=Backward) 

Case vbKeyEnter 
    Select Case TypeName(Cntrl) 
    Case TxtBoxType 
     If Not (Cntrl.EnterKeyBehavior And Cntrl.MultiLine) Then 
      Call MoveFocus(Cntrl:=Cntrl, TabIndex:=TabIndex) 
     End If 
    Case Else 
     On Error Resume Next 
     Application.Run Sheet1.CodeName & "." & Cntrl.name & "_Click" 
     On Error GoTo 0 
    End Select 
End Select 

代碼工作正常對照之間互聯前進和後退。但是,使用Enter鍵來檢查和取消選中複選框控件時遇到了麻煩。它適用於選項按鈕,但不起作用複選框。如果我將CheckBox1.Value = True添加到CheckBox1_Click事件中,它會檢查它是否爲true,但自然不會允許它將其選中爲false。我已經嘗試添加下面的IF語句,根據當前值將其設置爲true或false,但沒有任何反應。

If CheckBox1.Value = True Then 
    CheckBox1.Value = False 
Else 
    CheckBox1.Value = True 
End If 

另注:當我按下回車鍵沒有反應到表單控件下移的活動列的活動單元格。有什麼建議麼?

+1

空格鍵一直是切換複選框的可接受方法。你爲什麼要重寫Windows GUI系統? – Jeeped

+0

我猜我不知道空格鍵是複選框切換(仍然有點綠色)。此外,我要創建表單的人請求它 - 使用左手在數字鍵盤上選擇並右鍵輸入鍵。我會確保空格鍵爲我工作,並詢問這是否足以滿足他。如果沒有,有沒有辦法讓它與enter一起工作?謝謝你的幫助,Jeeped。 – SincereApathy

+0

'如果KeyCode = 13 Then CheckBox1.Value = Not CheckBox1.Value'按照想要的方式工作... –

回答

4

這可能也可能不是編程問題的答案;我會讓選民決定。
問:回車鍵模擬點擊不工作的複選框

你爲什麼會做這樣的事?你花費時間和精力故意「破壞」一個工作系統。所述空格鍵長期以來一直是打開和關閉切換複選框接受的鍵擊,標籤 + 標籤用於表單控件和之間導航Enter↵默認值。 '工作系統'我的意思是整個Mac/Windows/Linux GUI系統和數百萬經過長期定義的標準實踐培訓的人員。您可以將鼠標從任何能幹的辦公室工作人員身上取走,他們的生產力不會受到影響他們可以通過系統和應用程序導航來執行他們的工作,因爲系統中的所有內容(從設置視頻分辨率到打字工人的計時卡數據到自定義表格的工作方式與相同)。

以Windows用戶身份將其粘在第一臺Mac的前面。他們可以使用這些程序並完成工作,因爲絕大多數操作(特別是應用程序的基本操作)都是相同的。以Mac用戶身份並將它們粘在Linux機器的前面,您將獲得相同的結果。機器及其程序的基本日常操作是相同的。

如果您打算創建一個專有系統,將所有的培訓,實踐和經驗帶到窗外,那麼任何尋找工作的申請人都可以選擇帶有充滿辦公室經歷的簡歷?

使用空格鍵在Windows 3.0之前打開和關閉複選框。建立一個更好的捕鼠器和重新創造輪子¹有區別。


¹如果你不認爲維持GUI標準是值得爭取的,考慮到Office 2007的功能區創建的反彈。催生了一個致力於生產帶回Office 2003功能的附加組件的整個子行業。

+0

我並不反對你,並計劃繼續讓空間條發揮魔力。如果我知道空格鍵是我不會提出這個問題的標準。我從來沒有進行過正式的培訓,我從來沒有注意到它。可能不值得花時間解剖,但在這一點上,我只是有點好奇,爲什麼它不工作,如果代碼設置爲模擬點擊和點擊確實有效。它可能是相同的內部過程,允許空格鍵工作,設置阻止這一點,以維持他們的設計意圖? – SincereApathy

+0

tbh,我沒有真正看過你提供的代碼,但是對於所有的意圖和目的,如果你想足夠糟糕,你可以**重定向任何東西;即使你必須一路阻止截取通過Windows內核消息泵的消息。 [tab]和[shift] + [tab]導航應該是內置的。如果它不能正常工作,那麼你需要修改表單控件所在的Z順序。稍後我可能會將它看作一個智力練習,但我需要時間來構建一個「測試工作臺」用戶窗體目前沒有。 – Jeeped

+0

已經證明是關鍵的一點是,表單控件直接在工作表上,而不是在用戶窗體或框架中。我瞭解到,將它們放在框架內可能會讓我設置標籤索引順序。但是,我已經擁有了60多個控件,並試圖找到一種方法來重建整個窗體。 – SincereApathy