Есть ли способ заставить / program excel переключаться между листами при сканировании пространственного штрих-кода

346
William Aaron Winfrey

Я работаю на малый бизнес и мне нужна помощь в настройке нашей новой системы управления запасами. Я подготовил документ Excel, и сканер штрих-кодов вводит штрих-коды непосредственно в ячейки, но у меня возникла проблема. У нас более 100 деталей, и у каждой детали есть отдельная вкладка рабочего листа, каждая из которых помечена конкретным номером детали. Можно ли в любом случае кодировать рабочий лист, чтобы при сканировании штрих-кода номера детали было указано 1234LOCK, что Excel автоматически перейдет на лист с меткой 1234LOCK?

0
Когда штрих-код сканируется, как Excel узнает об этом? Если после сканирования Excel поместит этот штрих-код, скажем, в «Основной лист», в ячейку «A1», вы можете создать событие «Workbook Change ()», которое затем может перейти на лист, на который ссылается «A1». Что вы пробовали? BruceWayne 7 лет назад 1
В тот момент, когда штрих-код сканируется, он помещает информацию о штрих-коде в любой блок, в котором находится курсор. Я не особо старался, так как я все еще учусь. Итак, чтобы прояснить ваше утверждение, если, скажем, в ячейке А1 основного листа указано 1234LOCK, а я сканирую 1234LOCK, я могу создать изменение рабочей книги, которое переходит на лист 1234LOCK? William Aaron Winfrey 7 лет назад 0
Чтобы уточнить, я начал настраивать макрос, и мне хотелось бы, чтобы при нажатии он прослушивал входные данные, а после получения переходил на лист ввода. Например, если я нажимаю на кнопку выбора и сканирую в 1234LOCK, то он переходит к листу 1234LOCK William Aaron Winfrey 7 лет назад 0

1 ответ на вопрос

0
BruceWayne

Поместите это в модуль рабочего листа, который вы 1234LOCKвставляете при сканировании штрих-кода.

Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim lastRow As Long  If Range("C" & Rows.Count).End(xlUp).Row = Range("D" & Rows.Count).End(xlUp).Row Then lastRow = Range("C" & Rows.Count).End(xlUp).Row ElseIf Range("C" & Rows.Count).End(xlUp).Row < Range("D" & Rows.Count).End(xlUp).Row Then lastRow = Range("D" & Rows.Count).End(xlUp).Row + 1 End If  If Target.Address = "$C$" & lastRow Then For Each ws In ActiveWorkbook.Worksheets If ws.Name = Range("C" & lastRow).Value Then ws.Activate End If Next ws End If End Sub 

Я предполагаю, что ваше сканирование вызовет изменение листа, и имя входит в A1.

Это, кажется, направляет меня в правильном направлении, Это очень помогло! William Aaron Winfrey 7 лет назад 0
Я наконец все правильно заработал, у меня последний вопрос. У меня установлен макрос со следующим основным кодом. Private Sub CommanButton2_click () Range ("C99999"). End (xlUp), смещение (1,0) .select William Aaron Winfrey 7 лет назад 0
Я наконец все правильно заработал, у меня последний вопрос. У меня установлен макрос со следующим основным кодом. Range ("C99999"). End (xlUp), offset (1,0). Выберите проблему: мне нужна кнопка, чтобы узнать последнюю запись в ячейках столбцов C и D и поместить селектор в строку Column C это последняя строка записи для столбцов C или D. Примером может быть то, что в D10 есть номер, а в C10 нет номера, когда я запускаю макрос, необходимо поместить селектор в столбец C11, даже если в нем есть пустое значение. столбец C10, потому что есть номер в D10? какие-либо предложения? William Aaron Winfrey 7 лет назад 0
@WilliamAaronWinfrey - Что ты делаешь с этой клеткой? [Не `. Выбирайте`] (https://stackoverflow.com/questions/10714251/). Эта клетка, по сути, будет $ A $ 1? (Последняя ячейка - та, куда идет ваш BARSCAN?) BruceWayne 7 лет назад 0
Да, это правильно William Aaron Winfrey 7 лет назад 0
@WilliamAaronWinfrey - я думаю, я понял? Смотрите редактирование. Это помогает? BruceWayne 7 лет назад 0
Я вижу, куда вы идете, хотя это будет работать для рабочего листа, мне просто нужно это для отдельного макроса. При нажатии кнопки «Command» селектор будет помещен в первую пустую ячейку в столбце C, однако, если столбец D имеет значения в ячейках, расположенных ниже по списку, он поместит селектор в столбец C в строке ниже последнего столбца. D. У меня есть значения в других столбцах, которые растягивают длину листа, поэтому я должен быть конкретным для столбцов C и D William Aaron Winfrey 7 лет назад 0
@WilliamAaronWinfrey - см. Мое редактирование. BruceWayne 7 лет назад 0
(@WilliamAaronWinfrey - Если это работает для вас и решает проблему, вы можете пометить сообщение как «Ответ», нажав на флажок слева от сообщения под стрелками вверх / вниз.) BruceWayne 7 лет назад 0
@WilliamAaronWinfrey - По сути, я добавил оператор `If`: если строки в C и D имеют одинаковую длину, установите lastRow, чтобы использовать любую строку. Если они не равны, проверьте, если число. строк в столбце C меньше, чем в D. Если это так, установите lastRow равным количеству строк в столбце D + 1. ** Примечание ** У меня нет ничего, так как вероятность того, что столбец C длиннее Колонка D - будет ли это когда-нибудь так? BruceWayne 7 лет назад 0

Похожие вопросы