هنگامی که شخصی از ورک بوک Lorenzos استفاده می کند، دوست دارد فقط کلید F2 در دسترس کاربر باشد. او فکر می کند که آیا راهی برای غیرفعال کردن تمام کلیدهای تابع در اکسل، به استثنای کلید F2 وجود دارد ؟
راهی وجود دارد، اما باید با استفاده از ماکرو انجام شود. به طور خاص، شما می خواهید از روش OnKey شی Application استفاده کنید. این کد همه کلیدهای عملکرد را غیرفعال می کند به استثنای F2 :
Private Sub Workbook_Open()
Application.OnKey "{F1}", ""
Application.OnKey "{F3}", ""
Application.OnKey "{F4}", ""
Application.OnKey "{F5}", ""
Application.OnKey "{F6}", ""
Application.OnKey "{F7}", ""
Application.OnKey "{F8}", ""
Application.OnKey "{F9}", ""
Application.OnKey "{F10}", ""
Application.OnKey "{F11}", ""
Application.OnKey "{F12}", ""
End Sub
ماکرو باید به ماژول ThisWorkbook اضافه شود و با باز شدن ورک بوک به طور خودکار اجرا می شود.
در صورت تمایل، می توانید ماکرو را کمی کوتاهتر کنید:
Private Sub Workbook_Open()
Dim sTemp As String
Dim J As Integer
For J = 1 to 12
If J <> 2 Then
sTemp = "{F" & Trim(Str(J)) & "}"
Application.OnKey sTemp, ""
End If
Next J
End Sub
همچنین باید مطمئن شوید که وقتی ورک بوک را می بندید، همه کلیدهای عملکرد را دوباره فعال کنید. این ماکرو دوباره باید به ماژول ThisWorkbook اضافه شود:
Private Sub Workbook_BeforeClose(CANCEL As Boolean)
Application.OnKey "{F1}"
Application.OnKey "{F3}"
Application.OnKey "{F4}"
Application.OnKey "{F5}"
Application.OnKey "{F6}"
Application.OnKey "{F7}"
Application.OnKey "{F8}"
Application.OnKey "{F9}"
Application.OnKey "{F10}"
Application.OnKey "{F11}"
Application.OnKey "{F12}"
End Sub
همچنین می توانید از نسخه کوتاه تری از همان کد استفاده کنید:
Private Sub Workbook_BeforeClose(CANCEL As Boolean)
Dim sTemp As String
Dim J As Integer
For J = 1 to 12
If J <> 2 Then
sTemp = "{F" & Trim(Str(J)) & "}"
Application.OnKey sTemp
End If
Next J
End Sub