Ребята, всем привет! 👋
Продолжаем изучать VBA Excel. И сегодня поговорим о возможности автоматической нумерации строк при помощи VBA.
✍️ Если вы только начинаете осваивать VBA Excel мы уверены, каждый может найти для себя что-то новое!
✨ А прежде, чем мы начнем 📣 напомню, теперь у нас на канале есть удобный рубрикатор 👉 Быстрый поиск решения. Путеводитель по Excel, а все видео 📽 предыдущих уроков доступны и на YouTube.
Ранее мы уже рассматривали различные способы нумерации строк в Excel, но делали это исключительно при помощи формул:
🎥
А также способы:
Сегодня мы предлагаем вашему вниманию два более изящных способа автоматической нумерации строк при помощи VBA нумерации строк при помощи VBA.
📢 Скачать исходник с примером вы можете в конце статьи 🔽
▶️ ПРИМЕР 1. Нумерация при условии, что в ячейке столбца В есть значение
В примере рассмотрен способ автоматической нумерации строк при помощи VBA для ведения реестра слушателей по соответствующим программам
📝 Суть: Пользователь вносит соответствующую запись на листе Excel, а нумерация проставляется автоматически.
🔔 Преимущество данного способа заключается еще и в том, что вам не нужно прописывать формулы на листе, а как следствие, защищать сам лист, дабы пользователь не "испортил" ваши формулы.
Чтобы реализовать поставленную задачу предлагаем к использованию следующий код:
⚠️ ВАЖНО! Вышеприведенный код размещаем в модуль листа
В данном случае использован Метод Worksheet.Calculate (событие перерасчета листа). Это событие возникает каждый раз, когда рассчитываются или пересчитываются данные на рабочем листе.
Кроме того, мы также задали определенное условие при соблюдении которого макрос выполняется. Так,
- в я чейке А1 задана формула =СЧЁТЗ(Таблица1[Слушатель]), что позволяет выполнить расчет числа внесенных записей по слушателям
- в я чейке А2 задана формула =СЧЁТЗ(Таблица1[Категория обучения])
Таким образом если число записей слушателей больше, чем указано категорий, то в соответствующую ячейку столбца В проставляется категория ДО, те. выполняется часть кода:
а когда категория дополнена,то выполняется часть кода (т.е. выполняется нумерация):
Далее собираем код в один:
📍 В дополнение...
Как говорилось выше, наша задача кроме самой нумерации - это исключить возможность пользователя "испортить формулы", а потому написание формул =СЧЁТЗ(Таблица1[Слушатель]) и =СЧЁТЗ(Таблица1[Категория обучения]) мы автоматизируем так же при помощи VBA.
Для этого в окне модуля пишем код:
🔔 Теперь при каждом следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.
Прим.: Либо выведите кнопку для нерадивых пользователей типа:
🔊 Примечание: Безусловно можно было обойтись и без дополнительной проверки условия, но нам было важно также показать механизм написания формул с помощью макросов VBA в Excel.
🔘 Тестируем результат.
Теперь заполняя данные наша нумерация будет проставляться автоматически:
ПРИМЕР 2. Автоматическая нумерация строк в Excel по порядку с помощью VBA (для нескольких разделов и подразделов)
В примере рассмотрен способ автоматической нумерации разделов и подразделов при помощи VBA для ведения перечня реализуемых программ:
📝 Суть: Пользователь вносит соответствующую запись на листе Excel, при внесении изменений: удаление/вставка строк нумерация обновляется.
🔔 Преимущество: Данный способ может быть полезен когда записи вносятся "между", а нумерацию изменять в ручную - ну это такое себе удовольствие.
Кроме того, на данном примере мы рассмотрим:
- способ как задать возможность выполнение макроса при клике на ячейку;
- новую функцию IsNumeric.
Чтобы реализовать поставленную задачу предлагаем к использованию следующий код:
⚠️ ВАЖНО! Вышеприведенный код размещаем в модуль листа:
В данном примере для проверки условия была использована Функция Excel - IsNumber
IsNumber в Excel используется для определения, является ли содержимое ячейки числом или нет.
И т.к. столбец В может содержать как текст так и непосредственно нумерацию нам важно было проверять именно это условие.
🔔 IsNumeric рассматривает только логическое значение, которое дает результат только в форме ИСТИНА и ЛОЖЬ.
Собственно это нам и нужно было. 😉 Иными словами мы проверяем условие: если если ячейка "В2"+i содержит текст, то нумеруем, иначе - нет.
Кроме того, мы добавили возможность выполнение макроса при клике на ячейку: If ActiveCell.Column = 5 And Cells(ActiveCell.Row, ActiveCell.Column).Value = "ОБНОВИТЬ" And ActiveCell.Row = 1 Then
Такой способ мы еще не рассматривали, а потому полагаем он будет интересен с точки зрения практики.
🔘 Тестируем результат.
Теперь при клике на ячейку Е1 нумерация будет проставляться/обновляться автоматически:
А на этом сегодня все. 👏 Теперь вы знаете еще два способа автоматической нумерации строк при помощи VBA.
Мы надеемся, что Вы нашли этот урок полезным ⭐️⭐️⭐️⭐️⭐️
📝 Продолжение следует...
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel. Следите за нашими новостями и вы узнаете больше о VBA и Excel в частности.
🔔 Наша команда очень заинтересована в составлении качественного и полезного контента, а потому:
✔️ Понравился урок!? - Поблагодарите автора лайком 👍
✔️ Остались вопросы или есть свое решение!? - Оставляйте комментарий 💬
✔️ Требуется иное решение!? - ✏️ Пишите в комментариях 💬 свой вопрос и мы его обязательно рассмотрим в ближайшей теме обзора.
Нам важна Ваша обратная связь 💝 так мы можем анализировать на сколько данный материал был Вам полезен.
🌺🌺🌺 С наилучшими пожеланиями 🤝 команда excel_easy