Текстовое поле Excel ActiveX – количество символов или регистр изменений

Два дня непрерывной неудачи. Я использую систему штрих-кода, которая имеет сканер штрих-кодов, который сканирует штрих-код буквенно-цифрового текста и помещает его в текстовое поле ActiveX. Он вводит текст по одной букве за раз, и по завершении всего штрих-кода он соответствует варианту «Случай», который затем удаляет текст в поле, чтобы подготовиться к следующему сканированию.

Проблема, с которой я столкнулся, находится внутри текстового поля. По какой-либо причине текст переходит в текстовое поле, а иногда ~ (1 раз в один час или 0 раз в 8 часов), это не будет завершено. Точный текст внутри текстового поля, который соответствует одному из случаев, не учитывается и остается внутри поля. На этом этапе все будущие проверки добавляются в конец текста внутри поля.

Ниже приведен образец переменных, случай и одно из событий, происходящих на основе выбора случая.

переменные

Private Sub TextBox1_Change() Dim ws As Worksheet, v, n, t, b, c, e, f, h, j, k, i1, i2, i3, i4 Set ws = Worksheets("Sheet1") v = TextBox1.Value n = 0 t = 0 b = 0 c = 0 e = 0 f = 0 h = 0 j = 0 k = 0 i1 = 0 i2 = 0 i3 = 0 i4 = 0 

случай

  Select Case v Case "2 in x 16 ft R -1": n = 9 t = 1 b = 10 c = 1 e = 11 f = 6 g = "2 in x 16 ft" h = 40 j = 0.296 k = 1 

Материал, который делается на основе типа case

 'n = Sets the column reference for waste - not used? 't = Sets the cutting station column to be used (1,2,3) for the sq yards, row, and column of last scanned item for each station 'b = Sets the row reference for adding cut rolls waste + regular row reference for cut rolls 'c = Sets the column reference for adding cut rolls waste + regular column refernce for cut rolls 'e = Sets the column reference for taking 1 master roll out 'f = Sets the row reference for taking 1 master roll out 'g = name of the item being used for the time stamp 'h = Number of rolls coming out of the master roll 'j = The amount of Sq yards in the cut roll (to be used for waste) 'k = Case Selection 'i1 = Count for Cutting Station 1 timestamp, row reference 'i2 = Count for Cutting Station 2 timestamp, row reference 'i3 = Count for Cutting Station 3 timestamp, row reference 'i4 = Count for Cutting Station 1 timestamp, row reference - not used in this worksheet If k = 1 And t = 1 Then 'Cutter 1 items ws.Cells(1, t) = b ws.Cells(2, t) = c ws.Cells(3, t) = j ws.Cells(4, t) = b ws.Cells(5, t) = c ws.Cells(6, t) = f ws.Cells(7, t) = h ws.Cells(b, c) = ws.Cells(b, c) + h ' adding different number based on case ws.Cells(f, e) = ws.Cells(f, e) - 1 ' always subtracts 1 from certain range based on case i1 = ws.Cells(1, 30) Cells(i1, 19).Value = Format(Now, "mm/dd/yyyy AM/PM h:mm:ss") Cells(i1, 20).Value = g TextBox1.Activate TextBox1.Value = "" 

Помните, что текст вводится одним символом за раз, пока вся информация штрих-кодов не передается в текстовое поле ActiveX.

Я могу установить максимальную длину, но на максимальной длине он остается в текстовом поле. Если я установил текстовое поле в «", следующий символ в штрих-коде снова запустится, и проблема с добавлением будет продолжена.

Есть ли способ, чтобы выбор случая не начинался с ввода каждого отдельного символа? Есть ли способ, чтобы текстовое поле удаляло дополнительную информацию. Если вы установили его для удаления чего-то, что не соответствует случаю, оно удалит что-либо введенное, так как оно помещает по одному символу за раз.

С наилучшими пожеланиями,

брод

Давайте будем гением компьютера.