Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Скан-коды клавиатуры и ASCII символов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Скан-коды клавиатуры и ASCII символов
StoTisteg Дата: Среда, 06.04.2016, 22:56 | Сообщение № 1
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Столкнувшись с необходимостью обеспечения навигации по форме размером Дофига х Дохрена ListBox'ов, я тут обнаружил, что без скан-кодов клавиш это не получается от слова никак, а напоровшись на упрямый факт необходимости проверить, что в оные ListBox'ы впихнули юзвери, оказалось, что ещё и память моя не та, что четверть века тому и ASCII в ней удержались куда хужее, чем хотелось бы...
Поэтому я написал себе небольшую надстроечку, возвращающую при нажатии на клавишу её скан-код и ASCII (если есть). Макрос висит на Ctrl+Q, прошу любить и жаловать.
К сообщению приложен файл: KeyCode.xlsm (15.1 Kb)


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Среда, 06.04.2016, 22:58
 
Ответить
СообщениеСтолкнувшись с необходимостью обеспечения навигации по форме размером Дофига х Дохрена ListBox'ов, я тут обнаружил, что без скан-кодов клавиш это не получается от слова никак, а напоровшись на упрямый факт необходимости проверить, что в оные ListBox'ы впихнули юзвери, оказалось, что ещё и память моя не та, что четверть века тому и ASCII в ней удержались куда хужее, чем хотелось бы...
Поэтому я написал себе небольшую надстроечку, возвращающую при нажатии на клавишу её скан-код и ASCII (если есть). Макрос висит на Ctrl+Q, прошу любить и жаловать.

Автор - StoTisteg
Дата добавления - 06.04.2016 в 22:56
StoTisteg Дата: Пятница, 08.04.2016, 21:57 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
[p.s.]Мне всё-таки удалось добить эту фигню на одном только событии KeyDown :hands:
Теперь выкладываю нормальную, без извращений, версию с KeyPress. Одного не пойму — зачем в коде
[vba]
Код
Option Explicit

Private Sub txt_Коды_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    If Enter Then
        Cancel = True
        Enter = False
    End If

End Sub

Private Sub txt_Key_Change()

    If Smb = "" And Lng < Len(Me.txt_Key.Value) And Me.txt_Key.Value <> Code Then
        Smb = Right(Me.txt_Key.Value, 1)
        Me.txt_ASCII.Text = Asc(Smb)
    End If
    Me.txt_Key.Value = Code
    Lng = Len(Me.txt_Key.Value)

End Sub

Private Sub txt_Key_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    Code = KeyCode
    Smb = ""
    Me.txt_ASCII.Text = ""
    Select Case KeyCode
        Case 18
            KeyCode = 0
            Me.txt_ASCII.Text = ""
            Me.txt_Key.Value = "18"
        Case 121
            KeyCode = 0
            Me.txt_ASCII.Text = ""
            Me.txt_Key.Value = "121"
    End Select
    Call txt_Key_Change

End Sub
[/vba]
переменная Lng и как ОНО работает %)
К сообщению приложен файл: 4440707.xlsm (15.9 Kb)


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Пятница, 08.04.2016, 21:58
 
Ответить
Сообщение[p.s.]Мне всё-таки удалось добить эту фигню на одном только событии KeyDown :hands:
Теперь выкладываю нормальную, без извращений, версию с KeyPress. Одного не пойму — зачем в коде
[vba]
Код
Option Explicit

Private Sub txt_Коды_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    If Enter Then
        Cancel = True
        Enter = False
    End If

End Sub

Private Sub txt_Key_Change()

    If Smb = "" And Lng < Len(Me.txt_Key.Value) And Me.txt_Key.Value <> Code Then
        Smb = Right(Me.txt_Key.Value, 1)
        Me.txt_ASCII.Text = Asc(Smb)
    End If
    Me.txt_Key.Value = Code
    Lng = Len(Me.txt_Key.Value)

End Sub

Private Sub txt_Key_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    Code = KeyCode
    Smb = ""
    Me.txt_ASCII.Text = ""
    Select Case KeyCode
        Case 18
            KeyCode = 0
            Me.txt_ASCII.Text = ""
            Me.txt_Key.Value = "18"
        Case 121
            KeyCode = 0
            Me.txt_ASCII.Text = ""
            Me.txt_Key.Value = "121"
    End Select
    Call txt_Key_Change

End Sub
[/vba]
переменная Lng и как ОНО работает %)

Автор - StoTisteg
Дата добавления - 08.04.2016 в 21:57
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!