VBA Excel. Содержание рубрики

Содержание рубрики VBA Excel на сайте «Время не ждёт». Систематизация статей по тематическим группам для ускорения поиска нужной информации по заданной теме. Ссылки открываются в новом окне.

Знакомство с VBA Excel

Методы VBA Excel

Объект Range в VBA Excel

Объекты VBA Excel

Операторы в VBA Excel

Переменные в VBA Excel

Примеры кода VBA Excel

Автоматическая запись текущей даты и времени
Автоматическое заполнение интервала дат (периода)
Бегущая, ползущая и танцующая строки
Буфер обмена (копирование, вставка, очистка)
Выбор случайной ячейки из диапазона
Генератор случайных чисел (Rnd и Randomize)
Генерация документов (реестр, массив, бланк)
Генерация документов и отчетов
Добавление кнопки в контекстное меню
Копирование данных с одного листа на другой
Копирование и перемещение файлов
Номер последней заполненной строки
Отбор неповторяющихся значений
Отбор уникальных значений с помощью Collection
Отбор уникальных значений с помощью Dictionary
Открытие файла другой программы из кода VBA Excel
Ошибки в таблице – поиск и исправление
Перемещение листа и его отмена
Переход по ссылке к ячейке в другой книге
Поиск значения в таблице
Поиск повторяющихся значений (дубликатов)
Пользовательская автоформа (создание)
Проверка состояния книги (открыта или закрыта)
Проверка существования листа
Программное создание графика (диаграммы)
Программное создание модуля
Программное создание формы
Секундомер в ячейке рабочего листа
Создание простого тестового задания
Создание таблицы (умной, обычной)
Создание файлов
Создание, копирование, перемещение папок
Сортировка массива
Сортировка таблицы (диапазона)
Сохранение книг и листов в PDF
Сохранение массива в текстовый файл
Список файлов в папке
Сумма прописью (код пользовательской функции)
Удаление повторяющихся значений в диапазоне ячеек
Удаление пустых строк
Удаление файлов
Учет расхода воды и других ресурсов
Число Пи (значение)

Прочее в VBA Excel

Работа с Word из кода VBA Excel

Редактор VBA Excel

События VBA Excel

Функции в VBA Excel

Изменение значений других ячеек из функции
Пользовательская функция (синтаксис, компоненты)
Работа с текстом (функции)
Удаление лишних пробелов (LTrim, RTrim, Trim)
Функции Left, Mid, Right (вырезать часть строки)
Функции Space, String и StrReverse
Функция Beep API (звуковой сигнал, мелодия)
Функция Choose (синтаксис, компоненты, примеры)
Функция Filter (фильтрация массива)
Функция Format (синтаксис, параметры, примеры)
Функция FreeFile
Функция Hex
Функция InputBox (синтаксис, параметры, значения)
Функция InStr (синтаксис, параметры, примеры)
Функция InStrRev (синтаксис, параметры, примеры)
Функции Int и Fix
Функция Join (синтаксис, параметры, значения)
Функция MicroTimer
Функция MsgBox (синтаксис, параметры, значения)
Функция Replace (замена подстроки)
Функция Shell
Функция Split (синтаксис, параметры, значения)
Функция StrComp (сравнение строк)
Функция StrConv (смена регистра букв)
Функция Switch (синтаксис, примеры)
Функция Timer (примеры)
Функция для вычисления факториала
Функции для работы с датой
Функции преобразования типов данных

Циклы в VBA Excel

Элементы управления в VBA Excel

ComboBox – заполнение поля со списком
ListBox – заполнение списка данными
Маска ввода в TextBox
Размеры и расположение элементов управления
Свойства SelStart, SelLength, SelText (TextBox)
Свойство Picture элементов управления
Удаление элементов ActiveX с рабочего листа
Удаление элементов управления формы с листа
Элемент управления CheckBox (флажок)
Элемент управления ComboBox (поле со списком)
Элемент управления CommandButton (кнопка)
Элемент управления DTPicker
Элемент управления Frame (рамка)
Элемент управления Image
Элемент управления Label (метка, надпись)
Элемент управления ListBox (список)
Элемент управления MultiPage
Элемент управления OptionButton (переключатель)
Элемент управления RefEdit (редактор ссылок)
Элемент управления ScrollBar (полоса прокрутки)
Элемент управления SpinButton (счетчик)
Элемент управления TabStrip
Элемент управления TextBox (текстовое поле)
Элемент управления ToggleButton (выключатель)

24 комментария для “VBA Excel. Содержание рубрики”

  1. Здравствуйте! У Вас нет темы по работе с фильтром. Можно проконсультироваться на этот счёт?

  2. Спасибо, Евгений! Имеется в Excel столбец с включённым автофильтром. Можно ли программно запустить окно фильтра для выбора значений? Т.е. не руками нажимать на иконку фильтра, а заставить окно открываться с помощью макроса. Спасибо за ответ.

      1. Большущее спасибо!!! Я перерыл кучу сайтов, но нигде на находил ответ на свой вопрос. Можно ещё, Евгений, Вас потревожу?
        Теперь как корректно отработать кнопки Ok и Отмена работы фильтра? Только на одном форуме нашёл способ – вставить в произвольной ячейке формулу, в которой присутствует поле из фильтрованного списка (например, Range(“B2”).FormulaR1C1 = “=RС[-1]”), а потом в событии листа Worksheet_Calculate() прописать команды, которые соответствуют нажатию кнопки OK. Всё хорошо, когда лист пустой. Но если на нём ещё есть формулы или нужно подправить значение в какой-то ячейке, то не знаю, как отследить, в какой момент запускался фильтр, а в какой – другие манипуляции.

        1. Евгений

          Сергей, уточните вопрос: нужно программно нажать кнопки Ok и Отмена или отследить, какая из них была нажата?

          1. Просто отследить, какая кнопка нажата.
            По предыдущему вопросу. Я вставил sendkeys… в конец макроса, который запускается при нажатии кнопки на листе. Окно фильтра появляется и тут же закрывается. А как сделать, чтобы окно осталось, и пользователь мог выбрать данные?

        2. Евгений

          Пример отслеживания нажатий кнопки «OK» автофильтра. На нажатие кнопки «Отмена» код не реагирует.

          Вставьте в стандартный модуль (в примере – Module1) объявление глобальной переменной и код процедуры для кнопки:

          В модуль листа:

          Range("A1").CurrentRegion можно заменить на имя таблицы.

            1. Евгений

              Можно удалить, если в таблице есть другие формулы. Я изменил код процедуры Worksheet_Calculate() в предыдущем примере, чтобы она не реагировала на изменение формул, а только на нажатие кнопки «OK» автофильтра. Range("A1") – это ячейка с кнопкой фильтра.

  3. Евгений, спасибо за корректировку процедуры. Думаю, в ней и поле myString1 необязательно (и связанная проверка с ним), т.к. пользователь может выбрать все значения.
    Но… после команды SendKeys "%{DOWN}" событие Worksheet_Calculate() отрабатывается только один раз :(.

    1. Евгений

      Сергей, событие Worksheet_Calculate() не зависит от команды SendKeys "%{DOWN}". Ограничение стоит здесь:

      Код в процедуре Worksheet_Calculate() срабатывает только когда активна ячейка Range("A1"). Если заменить в этой строке Range("A1") на диапазон строки заголовков таблицы, тогда код будет срабатывать при любой активной ячейке в заголовке.

      В переменную myString записывается состояние таблицы до применения фильтра, в переменную myString1 – после применения. Затем их содержимое сравнивается: если они содержат разные значения – значит, фильтр был применен.

  4. Здравствуйте! может я не туда пишу. вопрос
    нужно посчитать кол-во строк в столбце “В” (от 100 до 5000) и вставить в формулу вместо 744
    table = Range("B2:C744")
    спасибо.

    1. Евгений

      Привет, Сергей!

      В столбце «B» не должно быть пустых ячеек до последней строки таблицы.

    1. Евгений

      Привет, Сергей!

  5. Спасибо за достаточно полную информацию.
    Был бы очень вам признателен, если бы вы подсказали:
    как изменить ширину блоков верхнего колонтитула.
    “Введена слишком длинная строка. Уменьшите число знаков.”
    При изменении шрифта с полужирного на обычный всё нормально
    воспринимается,
    Прошу прощения, если не по адресу.

  6. Владислав

    Добрый день! Никак не могу решить проблему с заблокированным автофильтром на защищенном макросом (нашел на форумах) листе. Подскажите пожалуйста, куда и какую строчку нужно добавить в макрос, чтобы при открытии файла был активен автофильтр:

    1. Евгений

      Добрый день, Владислав!
      Замените строку

      на

  7. Здравствуйте, помогите, пожалуйста, решить задачу((

    Разработать программу “Кредитный калькулятор” для расчета выплат по кредиту в условиях начисления процентов по аннуитетной схеме постнумерандо. Форма должна предусматривать ввод:
    1) сумма кредита, допустимы 2 знака после запятой;
    2) процентная ставка (годовая), допустимы 2 знака после запятой;
    3) количество периодов (месяцев), целое положительное число.
    Также форма должна содержать две кнопки:
    1) “Ok” (выполнить расчет, заполнить лист Excel, освободить форму и закончить работу программы);
    2) “Отмена” (освободить форму и закончить работу программы).
    На лист Excel следует вывести 5 колонок:
    1) номер периода;
    2) остаток кредита;
    3) сумма процентов за пользование кредитом, подлежащая к оплате;
    4) сумма погашения основного долга (кредита);
    5) общая сумма выплат за период.
    Форма должна быть открыта из макроса “main” и там же освобождена по завершению своего использования. Форма должна содержать только код работы с формой и ввода данных. Логика верификации данных должна быть, по возможности, отделена от кода формы. Бизнес-логика обязательно должна быть отделена от кода формы.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.