تخصيص مفاتيح Hotkeys لأزرار على النماذج التي تم إنشاؤها لـ Excel VBA

StackOverflow https://stackoverflow.com/questions/1340084

  •  20-09-2019
  •  | 
  •  

سؤال

لقد قمت بإنشاء ماكرو لـ Excel الذي سيظهر شكلًا يحتوي على زر وحقل نص. هل هناك طريقة لتعيين مفاتيح hotkes مثل "Ctrl+Enter" أو "F12" إلى الأزرار؟ يجب أن يعمل Hotkey بغض النظر عن الحقل أو الزر الذي ينصب عليه التركيز.

(حتى الآن تمكنت من إنشاء أزرار/Fields_Keydowns للتحقق من msforms.ReturnInteger لـ VBKEYF12 ، لكن يجب أن أفعل ذلك لكل حقل وزر ، هل هناك طريقة أسهل؟)

قل ، لدي شيئان في النموذج ، الزر "CommandButton1" و TextField "TextBox1"

رمز الزر:

Private Sub CommandButton1_click()
ActiveCell.FormulaR1C1 = UserForm1.TextBox1.Text 
End Sub

سيكون مفتاح Hotkey مفيدًا عندما أضيف المزيد من الحقول والأزرار ...

أيضا كيف يمكنني تعيين زر "الهروب" لإغلاق/إخفاء النموذج؟

هل كانت مفيدة؟

المحلول

لتعيين مفتاح "Escape" لتنشيط الزر الخاص بك لإغلاق/إخفاء النموذج: أولاً ، تحتاج إلى زر يخفي حدث نقره النموذج الخاص بك. ثم قم بتعيين خاصية "إلغاء" هذا الزر إلى True.

عند عرض النموذج الخاص بك ، وضغط على ESC ، سيتم إغلاق النموذج.

للحصول على "مفتاح Hotkey" ، قم بتعيين خاصية Accelerator الخاصة بالزر الخاص بك على خطاب ، ثم عندما يكون النموذج مفتوحًا ، إذا قمت بالضغط على Alt+[خطابك] ، فسيتم إطلاق حدث النقر فوق هذا الزر.

نصائح أخرى

الطريقة الوحيدة للقيام بذلك هي إضافة حدث keyup لكل عنصر تحكم في النموذج الذي يطلق على روتين معالجة لوحة المفاتيح المركزية:

Option Explicit

Private Sub CommandButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    HandleKey KeyCode
End Sub

Private Sub CommandButton2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    HandleKey KeyCode
End Sub

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    HandleKey KeyCode
End Sub

Private Sub HandleKey(KeyCode As MSForms.ReturnInteger)
    MsgBox KeyCode
    Select Case KeyCode
    Case 112 'F1
        'Do something because F1 was pressed
    Case 113 'F2
        'Do something because F2 was pressed
    Case 114 'F3 etc.
    End Select
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top