Board logo

標題: 焦點及控制權問題 [打印本頁]

作者: reangame    時間: 2023-4-19 23:16     標題: 焦點及控制權問題

本帖最後由 reangame 於 2023-4-19 23:21 編輯
  1. Private Sub CommandButton1_Click()
  2. ActiveCell.Value = "▲"
  3. ActiveCell.Offset(0, 1).Select
  4. ThisWorkbook.ActiveSheet.Activate ' 將控制權轉移到目前工作表
  5. End Sub
複製代碼
請問我在工作表中建立一個按鈕1,呼叫表單,
然後表單上建立按鈕2(上方為程式碼),
在工作表當前儲存格插入文字後,選取右邊儲存格,執行都正確,
但是,結束之後,無法直接使用鍵盤在工作表輸入資料,
點擊方向鍵,發現表單上的按鈕在切換選取狀態,
該如何撰寫程式碼,點擊按鈕2完成動作之後,可以直接使用鍵盤在工作表輸入資料呢?
  1. Private Sub UserForm_Activate()
  2. Dim ctrl As Control
  3. For Each ctrl In Me.Controls
  4. If TypeName(ctrl) = "CommandButton" Then
  5. ctrl.TabStop = False
  6. End If
  7. Next ctrl
  8. End Sub
複製代碼
TabStop屬性+Default屬性均已設定為false
  1. Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  2. If KeyCode = vbKeyTab Then
  3. Application.SendKeys "{TAB}"
  4. KeyCode = 0
  5. End If
  6. End Sub
複製代碼
這是chatgpt給的解法,仍然無法解決
  1. Sub showUF1()
  2.     UserForm1.Show modeless
  3. End Sub
複製代碼
這是按鈕1的程式碼
作者: reangame    時間: 2023-4-22 17:12

請問各位大大,這是無解的問題嗎?
作者: singo1232001    時間: 2023-7-24 02:17

本帖最後由 singo1232001 於 2023-7-24 02:19 編輯

回復 2# reangame

Public actRng
Private Sub CommandButton1_Click()
actRng.Value = "▲"
'actRng.Offset(0, 1).Select
'ThisWorkbook.ActiveSheet.Activate ' 將控制權轉移到目前工作表

unload me
'或者可以試試看UserForm1. Hide
End Sub


Private Sub UserForm_Activate()
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CommandButton" Then
ctrl.TabStop = False
End If
Next ctrl
End Sub

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
Application.SendKeys "{TAB}"
KeyCode = 0
End If
End Sub
複製代碼

Sub showUF1()
    set actRng = ActiveCell
    UserForm1.Show 0 'modeless
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)