Private Declare Function ActivateKeyboardLayout _ Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long Const kb_lay_ru As Long = 68748313, kb_lay_en As Long = 67699721 Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Count > 1 Then Exit Sub ' запрет на ввод русских букв в столбцы 2 и 5 If Target.Column = 2 Or Target.Column = 5 Then If Target Like "*[А-Яа-яЁё]*" Then ' если есть хоть одна русская буква MsgBox "Ввод русских букв недопустим!", vbCritical Target.Value = "" ' очистка ячейки End If End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Select Case Target.Column ' в зависимости от номера столбца активной ячеки Case 1, 3, 6 ' для столбцов 1, 3, 6 ВключитьРусскуюРаскладку Case 2, 5 ' для столбцов 2, 5 ВключитьАнглийскуюРаскладку Case Else: ' ничего не делаем (оставляем текущую раскладку) End Select End Sub Sub ВключитьРусскуюРаскладку() ' Переключить на русский язык x = ActivateKeyboardLayout&(kb_lay_ru, 0) End Sub Sub ВключитьАнглийскуюРаскладку() ' Переключить на английский язык x = ActivateKeyboardLayout&(kb_lay_en, 0) End Sub |