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

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

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

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

 

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

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

Public Function URL_Encode(ByRef txt As String) As String

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

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

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

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

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

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

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

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

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

 

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

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

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

 

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

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

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