Макросы VBA Excel — Страница 21

Макрос для условного форматирования ячеек с числами больше заданного

Скриншот результата применения макросом условного форматирования к диапазону ячеек

Макрос запрашивает у пользователя число,
и назначает правило условного форматирования для ячеек текущего столбца

 

Автосохранение надстройки в папке Addins

В некоторых случаях, при запуске файла Excel с макросами (к примеру, надстройки Excel), для обеспечения работы макросов требуется, чтобы был полный доступ к файлу (а не "только чтение"), или же файл был сохранён в заданной папке.

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

В этом вам поможет макрос SaveAddinToPermanentPath, который проверяет, из какой папки запущен файл, и предлагает, в случае необходимости, переместить файл в постоянную папку

В качестве постоянной папки макрос использует папку «UserLibrary», путь к которой можно получить из свойства Application.UserLibraryPath

На моём компьютере, эта папка расположена по пути 
C:\Documents and Settings\<имя пользователя>\Application Data\Microsoft\AddIns\

Код макроса SaveAddinToPermanentPath:

Преобразование строки, содержащей кириллицу, в URLEncode

Функция на VBA, которая преобразовывает Unicode (русский текст) в URLencode (Percent Encoding)

Public Function URL_Encode(ByRef txt As String) As String

Функция получения массива данных из видимых строк

Функция предназначена для получения двумерного массива данных из видимых строк листа Excel.

 

Например, нас интересует массив, начиная со второй строки, шириной 5 столбцов.

Если все строки на листе - видимые, то все делается просто, одной строкой кода:

arr = Range(Range("a2"), Range("a" & Rows.Count).End(xlUp)).Resize(, 5).Value 

 

А если на листе включен автофильтр (некоторые строки скрыты), а нам надо получить в массиве данные только из видимых строк?

Тогда на помощь придет функция GetVisibleRowsArray:

arr = GetVisibleRowsArray(ActiveSheet, 2, 1, 5)