Range макрос excel что значит

Свойство Range.Range (Excel)

Возвращает объект Range, представляющий ячейку или диапазон ячеек.

Синтаксис

выражения. Диапазон (Cell1, Cell2)

выражение: переменная, представляющая объект Range.

Параметры

ИмяОбязательный или необязательныйТип данныхОписание
Cell1ОбязательноVariantИмя диапазона. Это должна быть ссылка в стиле A1 на языке макроса. Он может содержать оператор диапазона (двоеточие), оператор пересечения (пробел) или оператор объединения (запятая). Он также может включать знаки доллара, но они игнорируются.

Можно использовать локально определенное имя в любой части диапазона. При использовании имени предполагается, что оно записано на языке макроса.Cell2НеобязательныйVariantЯчейка в левом верхнем и правом нижнем углах диапазона. Может быть объектом Range, содержащим одну ячейку, весь столбец или всю строку, или строкой, указывающей одну ячейку на языке макроса.

Примечания

При работе без квалификатора объекта это свойство является ярлыком для ActiveSheet.Range (возвращает диапазон от активного листа; если активный лист не является листом, свойство не работает).

При применении к объекту Range это свойство выполняется относительно объекта Range. Например, если выбрана ячейка C3, свойство Selection.Range(«B1») возвращает ячейку D3, так как оно выполняется относительно объекта Range, возвращаемого свойством Selection. С другой стороны, код ActiveSheet.Range(«B1») всегда возвращает ячейку B1.

Пример

В этом примере значение верхнего левого элемента диапазона B2:C4 на листе1 активной книги, то есть ячейки B2, составляет 3,14159.

В этом примере циклы на четырех ячейках в верхнем левом углу диапазона B2:Z22 на листе1 активной книги. Если в одной из ячеек есть значение меньше 0,001, в коде выполняется замена этого значения на 0 (ноль).

В этом примере устанавливается стиль шрифта в ячейках B2:D6 на листе1 активной книги до italic. В примере используется синтаксис 2 свойства Range.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Объект Range (Excel)

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

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.

Примечания

В разделе Пример описаны следующие свойства и методы для возврата объекта Range:

Пример

Чтобы вернуть объект Range, представляющий одну ячейку или диапазон ячеек, используйте синтаксис Range ( arg ), где arg обозначает диапазон. В следующем примере значение ячейки A1 помещается в ячейку A5.

В следующем примере диапазон A1:H8 заполняется случайными числами путем задания формулы для каждой ячейки в диапазоне. При использовании без квалификатора объекта (объекта слева от точки) свойство Range возвращает диапазон на активном листе. Если активное окно не является листом, метод завершается с ошибкой.

Используйте метод Activate объекта Worksheet, чтобы активировать лист перед использованием свойства Range без явного квалификатора объекта.

В следующем примере очищается содержимое диапазона Criteria.

Если используется текстовый аргумент для адреса диапазона, необходимо указать адрес в нотации стиля A1 (нельзя использовать нотацию в стиле R1C1).

Чтобы получить диапазон, содержащий все отдельные ячейки листа, используйте свойство Cells на листе. Вы можете обращаться к отдельным ячейкам, используя синтаксис Item(строка, столбец), где строка — индекс строки, а столбец — индекс столбца. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. В следующем примере на первом листе активной книги ячейке A1 присваивается значение 24, а в ячейке B1 — значение 42.

В следующем примере задается формула для ячейки A2.

Используйте синтаксис_выражение_.Cells, где выражение возвращает объект Range, чтобы получить диапазон с тем же адресом, состоящий из отдельных ячеек. В таком диапазоне отдельные ячейки доступны с помощью синтаксиса Item(строка, столбец) относительно левого верхнего угла первой области диапазона. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. В следующем примере на первом листе активной книги в ячейках C5 и D5 указывается формула.

Чтобы вернуть объект Range, используйте синтаксис Range ( ячейка1, ячейка2 ), где ячейка1 и ячейка2 — это объекты Range, указывающие начальную и конечную ячейки. В следующем примере устанавливается тип линии границы для ячеек A1:J10.

Имейте в виду, что точка перед каждым появлением свойства Cells является обязательной, если результат предыдущего оператора With нужно применять к свойству Cells. В данном случае указано, что ячейки расположены на листе один (без точки свойство Cells будет возвращать ячейки активного листа).

Чтобы получить диапазон, содержащий все строки листа, используйте свойство Rows на листе. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это индекс строки. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из строк. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются строки 4 и 10 первого листа активной книги.

Чтобы получить диапазон, содержащий все столбцы листа, используйте свойство Columns на листе. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это индекс столбца в виде числа или адреса столбца в формате А1. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из столбцов. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются столбцы B, C, E и J первого листа активной книги.

Используйте синтаксис_выражение_.Rows, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из строк первой области диапазона. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это относительный индекс строки от верхнего края первой области диапазона. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из строк. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются диапазоны C8:D8 и C6:D6 первого листа активной книги.

Используйте синтаксис_выражение_.Columns, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из столбцов первой области диапазона. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это относительный индекс столбца от левого края первой области диапазона, указанный в виде числа или адреса столбца в формате A1. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из столбцов. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются диапазоны L2:L10, G2:G10, F2:F10 и D2:D10 первого листа активной книги.

Чтобы вернуть диапазон с указанным смещением относительно другого диапазона, используйте синтаксис Offset ( строка, столбец ), где строка и столбец — это смещения строк и столбцов. В следующем примере выделяются ячейки, расположенные на три строки вниз и на один столбец вправо от ячейки в левом верхнем углу текущего выделенного фрагмента. Нельзя выбрать ячейку, которая находится не на активном листе, поэтому сначала необходимо активировать лист.

При работе с выделенными фрагментами, содержащими несколько областей, удобно применять свойство Areas. Оно разделяет выделенный фрагмент с несколькими областями на отдельные объекты Range, а затем возвращает объекты в виде коллекции. Вы можете использовать свойство Count в возвращенной коллекции, чтобы убедиться, что выделение содержит более одной области, как показано в следующем примере.

В этом примере используется метод AdvancedFilter объекта Range для создания списка уникальных значений, а также количества появлений этих уникальных значений в диапазоне столбца A.

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA Excel. Переменная диапазона ячеек (As Range)

Присвоение диапазона ячеек объектной переменной в VBA Excel. Адресация ячеек в переменной диапазона и работа с ними. Определение размера диапазона. Примеры.

Присвоение диапазона ячеек переменной

Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant, Object или Range:

Чтобы было понятнее, для чего переменная создана, объявляйте ее как Range.

Присваивается переменной диапазон ячеек с помощью оператора Set:

В выражении Range(Cells(3, 4), Cells(26, 18)) вместо чисел можно использовать переменные.

Для присвоения диапазона ячеек переменной можно использовать встроенное диалоговое окно Application.InputBox, которое позволяет выбрать диапазон на рабочем листе для дальнейшей работы с ним.

Адресация ячеек в диапазоне

К ячейкам присвоенного диапазона можно обращаться по их индексам, а также по индексам строк и столбцов, на пересечении которых они находятся.

Индексация ячеек в присвоенном диапазоне осуществляется слева направо и сверху вниз, например, для диапазона размерностью 5х5:

12345
678910
1112131415
1617181920
2122232425

Индексация строк и столбцов начинается с левой верхней ячейки. В диапазоне этого примера содержится 5 строк и 5 столбцов. На пересечении 2 строки и 4 столбца находится ячейка с индексом 9. Обратиться к ней можно так:

Источник

12) Объекты VBA Range

Что такое VBA Range?

Объект диапазона VBA представляет ячейку или несколько ячеек на листе Excel. Это самый важный объект Excel VBA. Используя объект диапазона Excel VBA, вы можете обратиться к

Как мы уже говорили в нашем предыдущем уроке, этот VBA используется для записи и запуска макросов. Но как VBA определить, какие данные из листа должны быть выполнены. Здесь полезны объекты диапазона VBA.

В этом уроке вы узнаете

Введение в ссылки на объекты в VBA

Ссылка на объект диапазона VBA в Excel и классификатор объектов.

Application.Workbooks.Worksheets.Range

Существует два основных типа объектов по умолчанию.

Как обратиться к объекту диапазона VBA в Excel, используя свойство Range

Свойство Range может применяться к двум различным типам объектов.

Синтаксис для свойства Range

Пример : MsgBox Worksheet («sheet1»). Range («A1»). Значение

Используя свойство Range, вы можете выполнять множество задач, таких как,

Как таковой, он будет слишком длинным, чтобы охватить все сценарии для свойства range. Для сценариев, упомянутых выше, мы продемонстрируем пример только для одного. Обратитесь к одной ячейке, используя свойство диапазона.

Ссылка на одну ячейку с использованием свойства Worksheet.Range

Чтобы ссылаться на одну ячейку, вы должны ссылаться на одну ячейку.

Синтаксис простой «Range (« Ячейка »)».

Здесь мы будем использовать команду «.Select», чтобы выбрать одну ячейку на листе.

Шаг 1) На этом шаге откройте свой Excel.

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Шаг 2) На этом этапе

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Шаг 3) На следующем шаге

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Шаг 4) Приведенный выше шаг откроет редактор кода VBA для имени файла «Single Cell Range». Введите код, как показано ниже, для выбора диапазона «А1» в Excel.

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Шаг 5) Теперь сохраните файл Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит и запустите программу, как показано ниже.

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Шаг 6) Вы увидите ячейку «А1», выбранную после выполнения программы.

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Кроме того, вы можете выбрать ячейку с определенным именем. Например, если вы хотите найти ячейку с именем «Guru99- VBA Tutorial». Вы должны выполнить команду, как показано ниже. Он выберет ячейку с таким именем.

Range («Учебник по Guru99-VBA»). Выбрать

Чтобы применить другой объект диапазона, вот пример кода.

Диапазон выбора ячейки в Excel Диапазон объявлен
Для одного рядаRange ( «1: 1»)
Для одного столбцаДиапазон («A: A»)
Для смежных клетокRange ( «A1: C5»)
Для несмежных клетокДиапазон («A1: C5, F1: F5»)
Для пересечения двух диапазоновДиапазон («A1: C5 F1: F5»)

(помните, что для ячейки пересечения оператор запятой отсутствует)

Объединить ячейкуRange («A1: C5»)

(для объединения ячеек используйте команду «merge»)

Cell Property

Как и в ассортименте, в VBA вы также можете «Cell Property». Единственное отличие состоит в том, что у него есть свойство «item», которое вы используете для ссылки на ячейки в вашей электронной таблице. Свойство ячейки полезно в цикле программирования.

Cells.item (строка, столбец). Обе строки ниже относятся к ячейке A1.

Свойство Range Offset

Свойство Range offset будет выделять строки / столбцы вдали от их исходного положения. На основе заявленного диапазона выбираются ячейки. Смотрите пример ниже.

Результатом для этого станет ячейка B2. Свойство offset будет перемещать ячейку A1 на 1 столбец и 1 строку. Вы можете изменить значение rowoffset / columnoffset согласно требованию. Вы можете использовать отрицательное значение (-1), чтобы переместить ячейки назад.

Скачать Excel, содержащий приведенный выше код

Резюме :

Источник

Автоматизация рутины в Microsoft Excel при помощи VBA

В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.

Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.

Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.

Поэтому, увы, будем учить Visual Basic.

Чуть-чуть подготовки и постановка задачи

Итак, поехали. Открываем Excel.

Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значитRange макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).

Результат, которого хотим добиться, выглядит примерно так:

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

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

Кодим

Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значитRange макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значитRange макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Напишем Hello World:

Sub FormatPrice()
MsgBox «Hello World!»
End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

Dim res As sTRING ‘ Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
‘ Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ‘ Конвертация чего угодно в String
If i = 5 Then Exit For
Next i

Dim x As Double
x = Val( «1.234» ) ‘ Парсинг чисел
x = x + 10
MsgBox x

On Error GoTo Err ‘ При ошибке перейти к метке Err
x = 5 / 0
MsgBox «OK!»
GoTo ne

ne:
On Error GoTo 0 ‘ Отключаем обработку ошибок

‘ Циклы бывает, какие захотите
Do While True
Exit Do

Loop ‘While True
Do ‘Until False
Exit Do
Loop Until False
‘ А вот при вызове функций, от которых хотим получить значение, скобки нужны.
‘ Val также умеет возвращать Integer
Select Case LengthSqr(Len( «abc» ), Val( «4» ))
Case 24
MsgBox «0»
Case 25
MsgBox «1»
Case 26
MsgBox «2»
End Select

Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.

Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.

Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.

Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.

Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.

Кодим много и под Excel

В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.

Sub FormatPrice()
Sheets( «result» ).Cells.Clear
Sheets( «data» ).Activate
End Sub

Работа с диапазонами ячеек

Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.

Примеры работы с Range

Sheets( «result» ).Activate
Dim r As Range
Set r = Range( «A1» )
r.Value = «123»
Set r = Range( «A3,A5» )
r.Font.Color = vbRed
r.Value = «456»
Set r = Range( «A6:A7» )
r.Value = «=A1+A3»

Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

Для упрощения работы рекомендую определить следующие функции-сокращения:

Function GetCol(Col As Integer ) As String
GetCol = Chr(Asc( «A» ) + Col)
End Function

Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».

Глобальные переменные

Option Explicit ‘ про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3

FormatPrice

Sub FormatPrice()
Dim I As Integer ‘ строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String

Теперь надо заполнить массив Groups:

На месте многоточия

И создать заголовки:

На месте многоточия в предыдущем куске

For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2

Не забудем про процедуру AddHeader:

Перед FormatPrice

Теперь надо перенести всякую информацию в result

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets( «Result» ).Activate
Columns.AutoFit

Всё. Можно любоваться первой версией.

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Select Case Ty
Case 1 ‘ Тип
.Font.Bold = True
.Font.Size = 16
.Borders(xlTop).Weight = xlThick
Case 2 ‘ Производитель
.Font.Size = 12
.Borders(xlTop).Weight = xlMedium
End Select
.Borders(xlBottom).Weight = xlMedium ‘ По убыванию: xlThick, xlMedium, xlThin, xlHairline
End With
CurRow = CurRow + 1
End Sub

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

Осталось лишь добится пропусков перед началом новой группы. Это легко:

В начале FormatPrice

Dim I As Integer ‘ строка в data
CurRow = 0 ‘ чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String

В цикле расстановки заголовков

If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer

Range макрос excel что значит. Смотреть фото Range макрос excel что значит. Смотреть картинку Range макрос excel что значит. Картинка про Range макрос excel что значит. Фото Range макрос excel что значит

В точности то, что и хотели.

Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.

Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.

Спасибо за внимание.

Буду рад конструктивной критике в комментариях.

UPD: Перезалил пример на Dropbox и min.us.

UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *