تخصيص مفاتيح Hotkeys لأزرار على النماذج التي تم إنشاؤها لـ Excel VBA
سؤال
لقد قمت بإنشاء ماكرو لـ 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