Excel VBA: как отключить ввод с клавиатуры — методы и примеры кода

Чтобы отключить ввод с клавиатуры в Excel VBA, вы можете использовать различные методы. Вот несколько примеров:

Метод 1: использование Application.OnKey

Application.OnKey "{F2}", "DoNothing"

В этом методе вы назначаете макрос с именем «DoNothing» определенной клавише (в данном примере F2). Макрос «DoNothing» может быть пустым или содержать код, который ничего не делает.

Метод 2. Использование Windows API

Private Declare Function BlockInput Lib "user32" (ByVal fBlock As Boolean) As Boolean
Sub DisableKeyboardInput()
    BlockInput True
End Sub
Sub EnableKeyboardInput()
    BlockInput False
End Sub

В этом методе вы используете функцию BlockInputиз Windows API для отключения и включения ввода с клавиатуры. Макрос DisableKeyboardInputотключает ввод с клавиатуры, а макрос EnableKeyboardInputвключает его.

Метод 3. Использование защиты рабочего листа

Sub DisableKeyboardInput()
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Sub EnableKeyboardInput()
    ActiveSheet.Unprotect
End Sub

В этом методе вы защищаете лист, чтобы отключить ввод с клавиатуры. Макрос DisableKeyboardInputзащищает лист, а макрос EnableKeyboardInputснимает с него защиту.

Метод 4. Использование пользовательской формы

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    KeyCode = 0
End Sub

В этом методе вы создаете UserForm и обрабатываете событие KeyDown. Установив для KeyCodeзначение 0, вы фактически отключите ввод с клавиатуры в форме.