Ребята, всем привет! 👋
Продолжаем изучать VBA Excel. В одном из уроков мы уже рассматривали пример решения поиска значения в реальном времени с использованием ActiveX ListBox.
В продолжение темы сегодня рассмотрим еще один способ как динамически отображать отфильтрованные данные во время ввода.
✍️ Если вы только начинаете осваивать VBA Excel мы уверены, каждый может найти для себя что-то новое!
✨ А прежде, чем мы начнем 📣 напомню, теперь у нас на канале есть удобный рубрикатор 👉 Быстрый поиск решения. Путеводитель по Excel, а все видео 📽 предыдущих уроков доступны и на YouTube.
📢 Скачать исходник с примером кода вы можете в конце статьи 🔽
Пример задачи:
Пусть мы имеем некоторую базу данных сотрудников:
Наша задача: создать поле поиска "фильтровать по мере ввода" и реализовать поиск ФИО сотрудника (ов).
Реализовать задуманное можно с помощью простого кода VBA:
❗ Но чтобы использовать этот код, вам нужно будет сначала вставить текстовое поле на листе, а затем добавить этот код для текстового поля.
Итак, рассмотрим решение пошагово.
⏩ ШАГ 1. Преобразование данных в таблицу Excel
🔔 Напомню, что в Excel есть большая разница между таблицей и диапазоном данных.
Ранее мы уже рассматривали как правильно создать таблицу в Excel
А потому первым шагом является преобразование данных в таблицу Excel.
Хотя вы можете использовать этот код без преобразования данных в таблицу Excel, это будет проще, когда данные находятся в таблице, поскольку на них становится легче ссылаться в коде VBA.
🔔 Обратите внимание: В рассматриваемом примере имя таблицы "Таблица1":
Вы можете использовать любое имя, которое пожелаете, но убедитесь, что оно используется и в коде VBA.
⏩ ШАГ 2. Добавление текстового поля на рабочий лист
Для отображения результата поиска в данном примере используется элемент управления ActiveX TextBox.
Чтобы добавить элемент управления ActiveX TextBox следует воспользоваться вкладкой Разработчик и режимом конструктора:
- Перейдите на вкладку Разработчик.
- В группе управления нажмите "Вставить".
- Щелкните значок текстового поля в элементах управления ActiveX
Поместите курсор в любом месте листа, щелкните и перетащите. При этом на листе будет вставлено текстовое поле:
Вы можете разместить это текстовое поле где угодно, а также изменить его размер.
Теперь, когда у вас есть текстовое поле на листе, его нужно подключить к ячейке, а затем добавить код VBA в окно кода текстового поля.
⏩ ШАГ 3. Подключить TextBox к ячейке
Для того, чтобы подключить наш TextBox к определенной ячейке выполним следующее:
- Кликнув по элементу управления правой кнопкой мыши откроем опцию "Свойства":
- В окне свойств перейдите к опции Связанной ячейки (LinkedCell) - это ячейка, которую мы подключаем к текстовому полю, и введите нужную ячейку (в нашем примере это С1):
👆 Теперь у вас есть текстовое поле, связанное с ячейкой, и эта ячейка будет использоваться в коде VBA для фильтрации данных.
⏩ ШАГ 4. ПИШЕМ КОД
Кликнув по элементу управления правой кнопкой мыши откроем опцию "Посмотреть код":
Откроется редактор VB.
В окне кода добавляем приведенный выше код VBA:
Теперь редактор VB можно закрыть и перейти к тестированию результатов.
🔔 ВАЖНО! Добавив код не забываем отключить режим конструктора
⏩ ШАГ 5. ТЕСТИРУЕМ РЕЗУЛЬТАТ
Теперь, когда все подготовительные действия выполнены мы можем протестировать работу макроса.
Для этого введем в поле поиска вводим значение для поиска:
✔️ Получаем результат:
🔔 Обратите внимание!
Т. к. мы реализовали возможность динамического отображения отфильтрованных данных во время ввода, то в зависимости от введенного значения в поле поиска отфильтрованные данные будут динамически изменяться:
А на этом сегодня все. 👏 Теперь вы знаете как динамически отображать отфильтрованные данные во время ввода. Я надеюсь, что вы нашли этот урок полезным.
Продолжение следует...
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel. Сэкономьте сумасшедшее количество времени, используя VBA. Следите за нашими новостями и вы узнаете больше о VBA и Excel в частности.
Понравился урок!? не забываем оставлять комментарий 📝Нам очень важна Ваша обратная связь 💝
И конечно же, за лайк 👍 благодарочка 💖 и респект 🤝 каждому!