Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9

Поиск значений по заданному столбцу

04.08.2016, 17:25. Показов 2337. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, нужна помощь. Есть макрос который при введении в него 13 символов перескакивает на строчку в низ. Как его видоизменить, что он искал эти введённые значения в заданном столбике. Иными словами есть база из 200 000 штрих кодов, нужно что б макрос находил введный штрих код и напротив в ячейке прибавлял +1. Заранее спасибо

Visual Basic
1
2
3
4
5
6
7
8
Private Sub TextBox1_Change()
    If bNonEvents Then Exit Sub
    If TextBox1.TextLength = 13 Then
        ActiveCell.Value = TextBox1.Value
        ActiveCell.Offset(1).Select
        TextBox1.Value = ""
    End If
End Sub
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2016, 17:25
Ответы с готовыми решениями:

Поиск по столбцу
Всем привет! Тема уже избитая, но все равно я не нашел ответа на вопрос. На таблице есть два столбца. В первом данные, во втором...

Поиск в таблице по столбцу и строке
1.Помогите пожалуйста, нужно сделать поиск в таблице. Номер строки и номер столбца вносятся через форму в тектбоксы. Нужно чтобы нашлось...

Группировка по первому столбцу и суммирование значений элементов второго столбца
Задали задание, не получается сделать Нужно задать двумерный массив М red 3 red 6 black 5 black 9 red 1 ...

17
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
05.08.2016, 14:52
Нужно чтобы этот поиск происходил сразу после введения 13 символов?
В приложении вариант отдельного поиска кода и прибавления.
Вложения
Тип файла: zip Book1.zip (16.7 Кб, 8 просмотров)
1
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.08.2016, 15:07
Если оставить первоначальную идею, то для одного штрих-кода можно и так :

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub TextBox1_Change()
    If TextBox1.TextLength = 13 Then
       Dim iCell As Range
       Set iCell = Range("A:A").Find(TextBox1, , xlValues, xlWhole)
       If Not iCell Is Nothing Then
          iCell(1, 2) = iCell(1, 2) + 1: TextBox1 = ""
       End If
    End If
End Sub
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9
05.08.2016, 15:21  [ТС]
Да нужно что б он искал сразу после 13 символов и ячейка куда вводим оставалась активна для ввода следующего кода. Нужно совместить то что вы написали с этим.
Вложения
Тип файла: rar Переход на строчку вниз1.rar (16.5 Кб, 9 просмотров)
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9
05.08.2016, 15:34  [ТС]
pashulka, Спасибо, это почти то что нужно, вопрос если их 50 000, как я увижу что там стало +1, как сделать что б на экран показывал результат поиска, но активной оставалась макрос ввода кода?
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.08.2016, 15:45
Artur220, Если Вы никому и ничему не доверяете, то используйте, например, два Label, один с изначальным значением ячейки, второй после +1
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9
05.08.2016, 16:15  [ТС]
pashulka, Просто нужно видеть если такой код уже был тойсть станет 2, тогда человеку нужно остановить проверку и убрать карточку с штрихкодом. А в код нельзя никак добавить? потому как это сделать с Label не понял
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.08.2016, 16:36
Если после того, как штрих-код будет найден, с ним что-то нужно делать, то замените суммирование на необходимые действия. Если скажите, что конкретно нужно делать, то возможно, решение будет найдено.
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9
07.08.2016, 15:33  [ТС]
pashulka, После того как штрих код был найден, его нужно показать и в соседней ячейке написать +1
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.08.2016, 15:40
Artur220, Тогда, например, так :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub TextBox1_Change()
    If TextBox1.TextLength = 13 Then
       Dim iCell As Range
       Set iCell = Range("A:A").Find(TextBox1, , xlValues, xlWhole)
       If Not iCell Is Nothing Then
          iCell(1, 2) = iCell(1, 2) + 1
       Else
          TextBox1 = ""
       End If
    End If
End Sub
Это позволит увидеть в текстовом поле штрих-код, который был найден.
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9
07.08.2016, 15:49  [ТС]
pashulka, Спасибо вам за ваши труды, я не много дополню, его нужно показать из списка шрих кодов в ячейке А, что б человека мог сравнить, а сейчас он стал виден только в поле ввода Текстбокс1
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.08.2016, 15:56
Лучший ответ Сообщение было отмечено Artur220 как решение

Решение

Если сравнивать нужно не найденный штрих-код, что бессмысленно, а другую информацию, то :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub TextBox1_Change()
    If TextBox1.TextLength = 13 Then
       Dim iCell As Range
       Set iCell = Range("A:A").Find(TextBox1, , xlValues, xlWhole)
       If Not iCell Is Nothing Then
          iCell.Activate 'Application.Goto iCell, True
          'Если в строке есть и другая информация, без
          'которой пользователь прожить не в состоянии
          iCell(1, 2) = iCell(1, 2) + 1
       Else
          TextBox1 = ""
       End If
    End If
End Sub
1
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9
07.08.2016, 16:16  [ТС]
pashulka, iCell.Activate это то что нужно было, спс. Только теперь это работает для одного шрих кода, после того как шртих код был найден, в TextBox1 остается старый шртих кода, что б ввести новый нужно убирать вручную. Как очищать автоматически после введения 13 символов?я так понимаю это If TextBox1.TextLength = 13 тут не работает. Тойсть после того как он считал штрих код, следующий он добавляет к этим 13 символам их выходит 26 и он не находит следующий код.
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.08.2016, 16:24
Очистка текстового поля, это строка#11 , а дальше Вы и сами можете изменить
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9
09.08.2016, 09:35  [ТС]
pashulka, разобрался, спасибо за наводку. Может подскажите как дополнить макрос, так что б еще в рядом ячейке велся подсчет считанных штрих кодов? Так что б TextBox2 выдавал сумму iCell(1, 2) + 1
Я так понимаю через .count нужно
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
09.08.2016, 10:09
Если во время работы с формой - нужно подсчитать сколько штрих-кодов было найдено, то :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub TextBox1_Change()
    If TextBox1.TextLength = 13 Then
       Dim iCell As Range
       Set iCell = Range("A:A").Find(TextBox1, , xlValues, xlWhole)
       If Not iCell Is Nothing Then
          Application.Goto iCell, True 'iCell.Activate
          'Если в строке есть и другая информация, без
          'которой пользователь прожить не в состоянии
          iCell(1, 2) = iCell(1, 2) + 1
          TextBox2 = Val(TextBox2) + 1
       End If
       'TextBox1 = ""
    End If
End Sub
P.S. TextBox2.Locked = True
1
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 9
09.08.2016, 14:15  [ТС]
pashulka, а если считать не найденные, а считанные? И не ясно, если штрих кода нету в столбика А, он просто остается в TextBox1, можно его как- то копировать в определенный столбик по очереди, если не нашел то копирует в D1,D2 , D3 и тд.?
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
09.08.2016, 14:59
Пробуйте

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub TextBox1_Change()
    If TextBox1.TextLength = 13 Then
       Dim iCell As Range
       Set iCell = Range("A:A").Find(TextBox1, , xlValues, xlWhole)
       If Not iCell Is Nothing Then
          Application.Goto iCell, True 'iCell.Activate
          iCell(1, 2) = iCell(1, 2) + 1
       Else
          Cells(Rows.Count, "D").End(xlUp)(2) = TextBox1
       End If
       TextBox2 = Val(TextBox2) + 1 ':TextBox1 = ""
    End If
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.08.2016, 14:59
Помогаю со студенческими работами здесь

ComboBox выбр значений в многомерный массиве по определенному столбцу | MS Excel
Здравствуйте Коллеги! Следующая ситуация в таблице четыре столбца, в последнем значения ИСТИНА / ЛОЖЬ. Не как не могу получить в...

Поиск значения на листе по строке и столбцу
Доброго времени суток! В VBA новичок, поэтому прошу не пинать, если увидите какую-то глупость, а просто ткнуть в неё носом))) Не...

Осуществить поиск по столбцу в котором есть проценты
Добрый день! Подскажите как мне осуществить поиск по столбцу в котором есть проценты. Надо найти проценты от 50 до 100 То есть, на...

Сравнение 2-х Книг по первому столбцу и вывод совпавших значений( всю строку) в 3-ю книгу
Всем Добрый день! Помогите пожалуйста с формулой или может здесь макрос нужен!? Имеется. 1 книга. Есть номера домов( некий перечень),...

Поиск по столбцу A:A по всем листам документа кроме первого
Здравствуйте! имею код поиска заданного значения по столбцу активного листа, Dim poz As Range, rng As Range, Adr As...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru