Страницы: 1
RSS
Ввод данных со считывателя RFID
 

Имеется RFID-считыватель, который при поднесении носителя прописывает его код в месте нахождения курсора и добавляет в конце Enter.

И есть два последовательных макроса по заполнению формы UserForm. Первый заканчивается переводом курсора в поле TextBox и приглашением поднести RFID-карту к считывателю. Второй макрос стартует с события AfterUpdate этого поля. Подразумевалось, что после получения RFID-данных выполнение программы продолжится, но Enter в конце считывания кода приводит к ошибке выполнения макросов. Можно ли решить эту проблему программно?

 
Да, можно решить
В свойствах текстбокса, в который сканируется rfid, нужно настроить обработку Enter (enter может вводиться в это же поле, или вызывать переход к следующему полю)

См. свойство текстбокса EnterFieldBehavior и свойство Multiline
Ну и, возможно, 1-2 строки кода нужно будет подкорректировать
 

Игорь, спасибо за совет отрегулировать свойства поля. В моем случае не помогло – курсор все равно предпочитает перескакивать на другое поле. Попробовал запереть курсор в TextBox, назначив  остальным полям формы TabStop = False, но Excel все равно помнит про этот чужой Enter.

Надо еще уточнить, что RFID-ридер прописывает код посимвольно (последний Enter), поэтому событие Change для принимающего поля бессмысленно.

В общем, как я выкрутился. Создал буферную непоказываемую форму из двух TextBox-ов (чтобы было куда скакать Enter-у). В первый считывается код, второй принимает данные  из первого по событию AfterUpdate, избавляясь тем самым от назойливого  Enter-а. Данные из второго поля используются в основном коде.

 
Цитата
Looser написал: Создал буферную непоказываемую форму...
Лишнее. Создаем TextBox, назначаем ему индекс, следующий за индексом основного TextBox. Прячем доп.TextBox за пределы формы, описываем в его событии SetFocus
 
Спасибо за совет, так и сделал. Только мне SetFocus применительно к скрытому TextBox не понадобился. Первый макрос заканчивается переводом курсора в основной TextBox и приглашением считать карту. Enter в конце считанного кода переводит курсор в невидимый доп. TextBox. Появление курсора в доп. TextBox является для того событием Enter, которое и запускает второй макрос, который свободно оперирует уже очищенным от Enter-а кодом из основного TextBox.
Страницы: 1
Читают тему
Наверх
Loading...