Excel cells описание - IT Новости из мира ПК
Remkomplekty.ru

IT Новости из мира ПК
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Excel cells описание

Вопрос 14. VBA Excel. Объекты, свойства и методы.

Одним из основных понятий VBA является объект. Объект – это то, чем вы управляете с помощью программы на языке VBA, например, форма, кнопка, рабочий лист или диапазон ячеек MS Excel. Каждый объект обладает некоторыми свойствами. Например, форма может быть видимой или невидимой в данный момент на экране. Другой пример свойства объекта – шрифт для отображения информации в ячейке (объекте) рабочего листа.

Объект содержит также список методов, которые к нему применимы. Методы – это то, что вы можете делать с объектом. Например, показать форму на экране или убрать её можно с помощью методов Show и Hide.

Таким образом, объект – это программный элемент, который имеет свое отображение на экране, содержит некоторые переменные, определяющие его свойства, и некоторые методы для управления объектом. Например, в MS Excel имеется много встроенных объектов:

Установка значений свойств – это один из способов управления объектами. Синтаксис установки значения свойства объекта следующий:

Объект. Свойство = Выражение

Основным свойством объектов Cells и Range, является Value(значение), которое, однако, можно не указывать. Например:

Range(“A5:A10”). Value = 0или Range(“A5:A10”) = 0– в диапазон ячеек A5:A10 заносится значение 0.

Cells(2, 4). Value = n или Cells(2, 4) = n – в ячейку, находящуюся на пересечении 2-й строки и 4-го столбца (ячейка с адресом “D2”), заносится значение переменной n.

Синтаксис чтения свойств объекта следующий:

Переменная = Объект. Свойство

Xn = Cells(1, 2).Value или Xn = Range(“B1”).Value– переменной Xn присваивается значение из ячейки B1 текущего рабочего листа.

Синтаксис применения методов к объекту:

Объект. Метод

Sheets(2).Activate –сделать активным лист с №2.

Sheets(“Диаграмма”).Delete –удалить лист с именем “Диаграмма”.

Range(«A5:A10»).Clear –очистить диапазон ячеек A5:A10.

Range(«A2:B10»).Select – выделить диапазон ячеек A2:B10.

В MS Excel имеются объекты, которые содержат другие объекты. Например, рабочая книга содержит рабочие листы, рабочий лист содержит диапазон ячеек и т.д. Объектом самого высокого уровня является Application(приложение). Если вы изменяете его свойства или вызываете его методы, то результат применяется к текущей работе MS Excel. Например:

Application.Quit — завершение работы с Excel.

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

Application.Workbooks(«Отчет»).Worksheets(«Май»).Rows(2).Delete

Нужно отметить следующее:

· Можно не писать имя объекта Application,так как это подразумевается по умолчанию.

· При работе с подобъектом уже активизированного объекта нет необходимости указывать содержащий его объект.

· VBA использует некоторые свойства и методы, которые возвращают объект к которому они относятся (это позволяет быстро указывать нужный объект). Примеры таких свойств: ActiveCell (активная ячейка), ActiveSheet (активный лист), ActiveWorkBook (активная рабочая книга). Так, установить значение активной ячейки можно следующим образом:

ActiveCell.Value = » Да».

Вопрос 15. VBA Excel. Ссылки на одиночные объекты и объекты семейств

Семейством (Collection) в VBA называется совокупность однотипных объектов. Например, в Excel семейство Worksheets является совокупностью всех рабочих листов — объектов Worksheet — в данной рабочей книге, а семейство Lines — совокупностью прямых линий, нарисованных на данном рабочем листе.

Составляющие семейство отдельные объекты называются элементами семейства. Можно ссылаться на отдельные элементы семейства, указывая в скобках имя конкретного объекта или его индекс — порядковый номер элемента в семействе. Например, оператор

закрывает рабочую книгу под именем ПОДПИСКА.xls.

А вот пример использования индекса элемента семейства. Оператор

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

Хотя семейства представляют собой группы объектов, сами семейства также являются одиночными объектами. Такой собирательный объект-семейство представляет собой всю совокупность входящих в семейство объектов, и имеет собственные свойства и методы, с помощью которых можно изменять разом состояние всех объектов семейства. Например, оператор ActiveSheet.Lines.Deletеудаляет все нарисованные на активном рабочем листе прямые линии.

Как правило, индивидуальные объекты, являющиеся элементами семейств, имеют гораздо больше свойств и методов, чем соответствующий собирательный объект-семейство. Например, объект-семейство Workbooks в Excel имеет всего пять свойств (Application, Count, Creator, Item, Parent) и четыре метода (Add, Close, Open, OpenText), то время как объект Workbook имеет 59 свойств и 42 метода.

Не все объекты приложений могут группироваться в семейства — для некоторых индивидуальных объектов не существует соответствующих семейств.

Вопрос 16. Объект Range. Назначение и особенности.

ОБЪЕКТ RANGE.

Range (объект «Диапазон»)позволяет изменять свойства диапазона ячеек, например, используемый шрифт, проверять или изменять содержимое ячеек, вырезать или копировать указанный диапазон, и многое другое. Это наиболее часто используемый в

Excel объект. Принадлежащий к этому же классу объектов объект ActiveCell — представляет собой активную в настоящий момент ячейку. Обратите внимание на то, что не существует такого объекта, как Cell — отдельно взятая ячейка представляет собой частный случай объекта Range.

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

· если вам нужно ввести данные в ячейку или отформатировать ее, то вы должны получить объект Range, представляющий эту ячейку;

· если вы хотите сделать что-то с выделенными вами ячейками, вам необходимо получить объект Range, представляющий выделение;

· если вам нужно просто что-то сделать с группой ячеек, первое ваше действие — опять-таки получить объект Range, представляющий эту группу ячеек.

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

где: объект — это объект типа Worksheet или Range, к которому применяется метод Range. Этот объект может быть опущен, и тогда предполагается, что метод Range применяется к активному рабочему листу — объекту ActiveSheet;

Объекты Excel

Термин Объекты Excel (понимаемый в широком смысле, как объектная модель Excel) включает в себя элементы, из которых состоит любая рабочая книга Excel. Это, например, рабочие листы (Worksheets), строки (Rows), столбцы (Columns), диапазоны ячеек (Ranges) и сама рабочая книга Excel (Workbook) в том числе. Каждый объект Excel имеет набор свойств, которые являются его неотъемлемой частью.

Например, объект Worksheet (рабочий лист) имеет свойства Name (имя), Protection (защита), Visible (видимость), Scroll Area (область прокрутки) и так далее. Таким образом, если в процессе выполнения макроса требуется скрыть рабочий лист, то достаточно изменить свойство Visible этого листа.

В Excel VBA существует особый тип объектов – коллекция. Как можно догадаться из названия, коллекция ссылается на группу (или коллекцию) объектов Excel. Например, коллекция Rows – это объект, содержащий все строки рабочего листа.

Доступ ко всем основным объектам Excel может быть осуществлён (прямо или косвенно) через объект Workbooks, который является коллекцией всех открытых в данный момент рабочих книг. Каждая рабочая книга содержит объект Sheets – коллекция, которая включает в себя все рабочие листы и листы с диаграммами рабочей книги. Каждый объект Worksheet состоит из коллекции Rows – в неё входят все строки рабочего листа, и коллекции Columns – все столбцы рабочего листа, и так далее.

В следующей таблице перечислены некоторые наиболее часто используемые объекты Excel. Полный перечень объектов Excel VBA можно найти на сайте Microsoft Office Developer (на английском).

Из объекта Workbook можно получить доступ к объекту Sheets, который является коллекцией всех листов рабочей книги (рабочие листы и диаграммы), а также к объекту Worksheets, который представляет из себя коллекцию всех рабочих листов книги Excel.

Кроме этого Вы можете использовать ActiveSheet для доступа к активному в данный момент рабочему листу. Из объекта Worksheet можно получить доступ к объектам Rows и Columns, которые являются коллекцией объектов Range, ссылающихся на строки и столбцы рабочего листа. А также можно получить доступ к отдельной ячейке или к любому диапазону смежных ячеек на рабочем листе.

Доступ к диапазону, состоящему из единственной ячейки, может быть осуществлён через объект Worksheet при помощи свойства Cells, например, Worksheet.Cells(1,1).

По-другому ссылку на диапазон можно записать, указав адреса начальной и конечной ячеек. Их можно записать через двоеточие или через запятую. Например, Worksheet.Range(“A1:B10”) или Worksheet.Range(“A1”, “B10”) или Worksheet.Range(Cells(1,1), Cells(10,2)).

Обратите внимание, если в адресе Range вторая ячейка не указана (например, Worksheet.Range(“A1”) или Worksheet.Range(Cells(1,1)), то будет выбран диапазон, состоящий из единственной ячейки.

Читать еще:  Excel vba on error

Приведённая выше таблица показывает, как выполняется доступ к объектам Excel через родительские объекты. Например, ссылку на диапазон ячеек можно записать вот так:

Присваивание объекта переменной

В Excel VBA объект может быть присвоен переменной при помощи ключевого слова Set:

Активный объект

В любой момент времени в Excel есть активный объект Workbook – это рабочая книга, открытая в этот момент. Точно так же существует активный объект Worksheet, активный объект Range и так далее.

Сослаться на активный объект Workbook или Sheet в коде VBA можно как на ActiveWorkbook или ActiveSheet, а на активный объект Range – как на Selection.

Если в коде VBA записана ссылка на рабочий лист, без указания к какой именно рабочей книге он относится, то Excel по умолчанию обращается к активной рабочей книге. Точно так же, если сослаться на диапазон, не указывая определённую рабочую книгу или лист, то Excel по умолчанию обратится к активному рабочему листу в активной рабочей книге.

Таким образом, чтобы сослаться на диапазон A1:B10 на активном рабочем листе активной книги, можно записать просто:

Смена активного объекта

Если в процессе выполнения программы требуется сделать активной другую рабочую книгу, другой рабочий лист, диапазон и так далее, то для этого нужно использовать методы Activate или Select вот таким образом:

Методы объектов, в том числе использованные только что методы Activate или Select, далее будут рассмотрены более подробно.

Свойства объектов

Каждый объект VBA имеет заданные для него свойства. Например, объект Workbook имеет свойства Name (имя), RevisionNumber (количество сохранений), Sheets (листы) и множество других. Чтобы получить доступ к свойствам объекта, нужно записать имя объекта, затем точку и далее имя свойства. Например, имя активной рабочей книги может быть доступно вот так: ActiveWorkbook.Name. Таким образом, чтобы присвоить переменной wbName имя активной рабочей книги, можно использовать вот такой код:

Ранее мы показали, как объект Workbook может быть использован для доступа к объекту Worksheet при помощи такой команды:

Это возможно потому, что коллекция Worksheets является свойством объекта Workbook.

Некоторые свойства объекта доступны только для чтения, то есть их значения пользователь изменять не может. В то же время существуют свойства, которым можно присваивать различные значения. Например, чтобы изменить название активного листа на “Мой рабочий лист“, достаточно присвоить это имя свойству Name активного листа, вот так:

Методы объектов

Объекты VBA имеют методы для выполнения определённых действий. Методы объекта – это процедуры, привязанные к объектам определённого типа. Например, объект Workbook имеет методы Activate, Close, Save и ещё множество других.

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

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

Чтобы передать методу аргументы, необходимо записать после вызова метода значения этих аргументов через запятую. Например, если нужно сохранить активную рабочую книгу как файл .csv с именем “Книга2”, то нужно вызвать метод SaveAs объекта Workbook и передать аргументу Filename значение Книга2, а аргументу FileFormat – значение xlCSV:

Чтобы сделать код более читаемым, при вызове метода можно использовать именованные аргументы. В этом случае сначала записывают имя аргумента, затем оператор присваивания “:=” и после него указывают значение. Таким образом, приведённый выше пример вызова метода SaveAs объекта Workbook можно записать по-другому:

В окне Object Browser редактора Visual Basic показан список всех доступных объектов, их свойств и методов. Чтобы открыть этот список, запустите редактор Visual Basic и нажмите F2.

Рассмотрим несколько примеров

Пример 1

Этот отрывок кода VBA может служить иллюстрацией использования цикла For Each. В данном случае мы обратимся к нему, чтобы продемонстрировать ссылки на объект Worksheets (который по умолчанию берётся из активной рабочей книги) и ссылки на каждый объект Worksheet отдельно. Обратите внимание, что для вывода на экран имени каждого рабочего листа использовано свойство Name объекта Worksheet.

Пример 2

В этом примере кода VBA показано, как можно получать доступ к рабочим листам и диапазонам ячеек из других рабочих книг. Кроме этого, Вы убедитесь, что если не указана ссылка на какой-то определённый объект, то по умолчанию используются активные объекты Excel. Данный пример демонстрирует использование ключевого слова Set для присваивания объекта переменной.

В коде, приведённом ниже, для объекта Range вызывается метод PasteSpecial. Этот метод передаёт аргументу Paste значение xlPasteValues.

Пример 3

Следующий отрывок кода VBA показывает пример объекта (коллекции) Columns и демонстрирует, как доступ к нему осуществляется из объекта Worksheet. Кроме этого, Вы увидите, что, ссылаясь на ячейку или диапазон ячеек на активном рабочем листе, можно не указывать этот лист в ссылке. Вновь встречаем ключевое слово Set, при помощи которого объект Range присваивается переменной Col.

Данный код VBA показывает также пример доступа к свойству Value объекта Range и изменение его значения.

Свойства и методы объектов семейства WorkSheets Excel VBA

Свойства и методы объектов Application и Workbooks рассматриваются в предыдущей статье .

Основные свойства и методы объектов семейства WorkSheets

Объект Worksheet представляет собой рабочий лист. Объект Worksheet можно получить, используя свойства ActiveSheet или Worksheets объекта Workbook.

Свойства объектов семейства WorkSheets

Методы объектов семейства Worksheets

События объекта Worksheet

Объект Range

Адресация ячеек в Excel
Для ссылок на ячейки в Excel используются 2 формата:

Полный адрес ячейки может содержать также имя рабочего листа и адрес книги. После имени листа ставится знак “!”, а адрес книги заключается в квадратные скобки. Например:

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

Если используется свойство Range, то в качестве аргумента указывается любая допустимая в Excel ссылка в формате A1. Если имя листа не указывается, то используется активный лист. Например:

‘Ячейке A5 листа Лист1 присвоить значение 5
Worksheets(«Лист1»).Range(«A5»).Value = 5
‘Ячейке A5 текущего листа присвоить значение 5
Range(«A5»).Value = 5

Свойство Cells используется для доступа к отдельной ячейке. В качестве аргументов указываются номер строки и столбца. Например, так можно присвоить значение ячейке A5 первого рабочего листа:
Worksheets(1).Cells(5,1).Value = 5

Можно также использовать свойство Cells для альтернативного указания диапазона. Например:
Range(«A2:C3») и Range(Cells(2,1), Cells(3,3))
определяют один и тот же диапазон.

Основные свойства объекта Range

Методы объекта Range можно разделить на две большие группы: методы, относящиеся к самому объекту, и методы, реализующие команды. Многие из них имеют параметры, которые здесь описываются лишь частично. Подробнее о параметрах этих методов можно прочитать, например, в справочной системе Excel. Для изучения методов, реализующих команды, рекомендуется записать макрос, выполняющий нужную команду, и проанализировать полученный код.

Основные методы объекта Range

Методы объекта Range, реализующие команды Excel

Кроме приведенных выше методов, реализующих команды объект Range имеет методы, которые используют команды Excel.

Рассмотрим свойства и методы объекта Range и Selection на примере выполнения задания.
Задание 1.

1. На рабочем листе с именем Лист1 поместите кнопку формы.
2. Назначьте для этой кнопки макрос с именем Кнопка1_Щелкнуть.
3 . В окне редактирования кода редактора Visual Basic запишите следующий программный код.

Option Explicit
Sub Кнопка1_Щелкнуть()
‘В ячейку A1 записывается текст
Range(«A1″).Value = » Упражнение «
‘Выделяется ячейка A1
Range(«A1»).Select
With Selection
‘Получаем адрес активной ячейки
MsgBox «Адрес активной ячейки» & .Address()
‘Получаем значение в активной ячейке
MsgBox «Значение активной ячейки » & .Value
End With
‘Изменяем параметра шрифта для активной ячейки
With Selection
.Font.Size = 16
End With
‘В ячеки вводим числовые значения и формулу
Range(«A2»).Value = 2
Range(«B2»).Value = 4
Range(«C2»).Formula = «=A2^B2»
‘Получаем количество строк в диапазоне
MsgBox «Количество строк в области A1:C2 =» & Range(«A1:C2») _
.Rows.Count
MsgBox «Количество строк в текущем диапазоне» & Range(«A1») _
.CurrentRegion.Rows.Count
‘Очищаем диапазон
Range(«A1:C2»).Clear
‘ Используем объект Cells
Cells(1, 1) = » Упражнение «
End Sub

4. Прочитайте все команды программы и попытайтесь понять их назначение и синтаксис записи. Обратите внимание на текст комментариев.
5. Запустите макрос на выполнение.
6. Проследите за тем, какие действия выполняет программа.
7. Сопоставьте команды программы и выполняемые ей действия

Читать еще:  Среднее квадратичное в excel

Задание 2 . Пусть на рабочем листе имеется таблица. В левой ячейке ее первой строки находится заголовок таблицы. В следующей строке – заголовки столбцов. В остальных строках – данные. Количество строк заранее не известно. Создайте диалоговое окно, которое позволит отформатировать таблицу: разместит заголовок таблицы по центру над столбцами, изменит шрифт (размер – 14, курсив, цвет – красный), заголовки столбцов расположит в центре, изменит шрифт на полужирный. В окне также имеется поле для ввода диапазона ячеек и кнопка, позволяющая убрать форматирование для указанных ячеек. Вид диалогового окна и результат форматирования показан на рис. 1, 2.

Выполните следующие действия:

1. Создайте приведенную на рис.6.3 форму. На ней размещены элемент Надпись , две кнопки и элемент RefEdit. Установите необходимые свойства элементов.
2. В общей области окна редактирования кода формы декларируйте переменные:

Dim myR As Range
Dim Заголовок As Range
Dim Названия As Range
Dim c As Integer
Dim r As Integer

3. Напишите процедуры обработки события Click для кнопок. Они могут быть примерно такими:

Private Sub КнопкаФорматировать_Click()
‘присваиваем переменной myR значение (ссылка на
‘диапазон берется из элемента RefEdit)
Set myR = Range(RefEdit1.Text)
r = myR.Rows.Count ‘число строк в диапазоне
c = myR.Columns.Count ‘число столбцов в диапазоне
Set Заголовок = Range(myR.Cells(1,1), myR.Cells(1,c))
Set Названия = Range(myR.Cells(2,1), myR.Cells(2,c))
Заголовок.Select
Selection.HorizontalAlignment = xlCenterAcrossSelection
With Заголовок.Font
.Name = «Arial Cyr»
.FontStyle = «полужирный курсив»
.Size = 14
.ColorIndex = 3
End With
Названия.HorizontalAlignment = xlCenter
With Названия.Font
.Name = «Arial Cyr»
.FontStyle = «полужирный»
.Size = 10
End With
End Sub Private Sub КнопкаУбратьФормат_Click()
Set myR = Range(RefEdit1.Text)
myR.ClearFormats
End Sub

4. Проверьте работу программы. Для вызова окна используйте кнопку, размещенную на рабочем листе.

Range(Cells(2, 3), Cells(5, 6)).Select

Доступ к ячейкам Листа Excel, ввод вывод данных в ячейки,

Оформление вида ячеек

Ввод вывод данных в ячейки Листа Excel осуществляется посредством свойств Cells (ячейки) и Range (диапазон ячеек). В свою очередь свойства Cells и Range являются объектами и содержат вложенные свойства такие, как Volue (значение), Interior (интерьер, оформление), formula (формула), Select (выбор) и другие.

Объект Cells и его свойство Cells можно рассматривать как базовый объект и основное свойство Листа Excel. Доступ к ячейке посредством свойства Cells осуществляется через индексы R (Row – строка) и C (Column – столбец). Для того чтобы выбрать некоторую ячейку достаточно в свойстве Cells указать RC адрес необходимой ячейки и выбрать свойство Select.

Выполнение указанной строки программы передаст фокус указателя мыши (выделит ячейку) на ячейку находящуюся на пересечении 2 – строки и 3 – го столбца активного листа Excel.

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

Выполнение указанной строки программы передаст фокус указателя мыши на ячейку находящуюся на пересечении 2 – строки и 3 – го столбца активного листа Excel, т.е. будет выбрана ячейка [С2].

Обратите внимание на тот факт, что символьный адрес ячейки является строкой (текстом) и заключается в кавычки.

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

Также в свойстве Range можно выразить диапазон ячеек, заменив символьные адреса свойством Cells, с указанием RC адресов ячеек.

Range(Cells(2, 3), Cells(5, 6)).Select

Запись в ячейку некоторых данных можно осуществить как с использованием вложенных свойств Value, Value2 и Formula так и без их использования. Применение вложенных свойств несколько повышает быстродействие операций или обуславливется точностью вычислений. Например, для записи значения числа (e) в память ячейки с высокой точностью (12 байт) следует применить свойство Value2.

Range(“A1”).Value2 = Exp(1) [2,718281828]

Обратите внимание на тот факт, что отображение значения числа (e) вычисленного с обычной точностью будет иметь то же количество знаков, что и отображение значения вычисленного с обычной (8 байт) точностью. Однако в оперативной памяти ячейки, значение вычисленное с высокой точностью будет содержать больше разрядов после запятой на 4 байта. Одинаковое представление числа в ячейке определяется форматом вывода значения.

Cells(2,1).Volue = Exp(1) [2,718281828]

Если возникает необходимость выполнить вычисление непосредственно в ячейке или воспользоваться функциями, представленными в мастере функций Excel необходимо применить свойство Formula.

Приведенная выше программная строка (свойство Formula) передает управление на связанное с ячейкой поле ввода формул (Parser — вычислитель). Таким образом, запись формулы в программе выглядит эквивалентно вводу формул в Excel. Так как любое поле ввода имеет тип “строка”, то запись выражения необходимо взять в кавычки.

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

Range(“A3”) = Range(“A1”) + Cells(2,1)

Применение свойств Range и Cells в практической работе имеет ряд особенностей. Свойство Range целесообразно применять в случаях, когда заведомо известно (определено) в какую ячейку необходимо записать некоторые данные или из какой ячейки выбрать необходимые данные. Свойство Cells удобно использовать для ввода вывода массивов данных или когда адрес ячейки вычисляется (задан в виде ссылки).

Помимо ввода и вывода данных в ячейки можно программно оформить внешний вид ячейки и диапазона ячеек. Оформление внешнего вида ячеек осуществляется посредством свойства Interior (интерьер) и вложенных в него свойств Color (цвет), ColorIndex (индекс цвета), Pattern (узор) и др. Указанные свойства имеют предопределенные значения. Например, свойству Color можно присвоить значение цвета посредством символического имени, соответствующего двоичному коду в шестнадцатеричном представлении:

vbBlack &H000000 Черный

vbRed &H0000FF Красный

vbGreen &H00FF00 Зеленый

vbYellow &H00FFFF Желтый

vbBlue &HFF0000 Синий

vbMagenta &HFF00FF Розовый

vbCyan &HFFFF00 Голубой

vbWhite &HFFFFFF Белый

Также можно непосредственно задать значение цвета в шестнадцатеричном коде.

Особенностью применения свойства Interior в свойстве Cells для ранних версий Excel, например Office97, является обязательный предварительный выбор ячейки.

Cells(1, 1).Interior.Color = &HFF0000

Cells(1, 2).Interior.Color = vbGreen

Цвет ячейки (диапазона ячеек) можно определить через индекс палитры цветов. Для этого достаточно воспользоваться свойством ColorIndex. Палитра цветов ячеек содержит 40 значений, которые представлены индексами в диапазоне [0-39].

Cells(1, 1).Interior.ColorIndex = 3 ‘ Красный

Range(«A2»).Interior.ColorIndex = 5 ‘ Синий

Определить цвет ячейки (диапазона ячеек) можно также путем присвоения свойству Color десятичного значения.

Cells(1, 1).Interior.Color = 255 ‘красный

Range(«a2»).Interior.Color = 16711680 ‘синий

Ячейки (диапазон ячеек) можно залить узором. В VBA предопределены 20 видов узоров, а именно: xlPatternAutomatic, xlPatternChecker, xlPatternCrissCross, xlPatternDown, xlPatternGray16, xlPatternGray25, xlPatternGray50, xlPatternGray75, xlPatternGray8, xlPatternGrid, xlPatternHorizontal, xlPatternLightDown, xlPatternLightHorizontal, xlPatternLightUp, xlPatternLightVertical, xlPatternNone, xlPatternSemiGray75, xlPatternSolid, xlPatternUp, xlPatternVertical.

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

Range(«A6»).Font.Italic = True

В процессе написания программы часто приходится перечислять одни и те же свойства. Для улучшения читаемости программы, а также для сокращения строк программы в VBA имеется конструкция (With… End With) перечисления свойств. Приведенная выше запись фрагмента программы, с использованием указанной конструкции будет иметь следующий вид.

With Range(«A6»).Font

.Name = «Arial»: .Color = vbBlue: .Size = 12

Самые главные свойства (Range и Cells)

сэр Артур Конан Дойл

Это большая ошибка — теоретизировать, прежде чем кто-то получит данные

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

Рассматриваемые темы включают свойство смещения, чтение значений между ячейками, чтение значений в массивы и форматирование ячеек.

Краткое руководство по диапазонам и клеткам

Введение

Это третья статья, посвященная трем основным элементам VBA. Этими тремя элементами являются Workbooks, Worksheets и Ranges/Cells. Cells, безусловно, самая важная часть Excel. Почти все, что вы делаете в Excel, начинается и заканчивается ячейками.

Вы делаете три основных вещи с помощью ячеек:

  1. Читаете из ячейки.
  2. Пишите в ячейку.
  3. Изменяете формат ячейки.

В Excel есть несколько методов для доступа к ячейкам, таких как Range, Cells и Offset. Можно запутаться, так как эти функции делают похожие операции.

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

Давайте начнем с самого простого метода доступа к ячейкам — с помощью свойства Range рабочего листа.

Важное замечание

Я недавно обновил эту статью, сейчас использую Value2.

Вам может быть интересно, в чем разница между Value, Value2 и значением по умолчанию:

Использование Value может усечь число, если ячейка отформатирована, как валюта. Если вы не используете какое-либо свойство, по умолчанию используется Value.

Читать еще:  Как копировать таблицы в excel

Лучше использовать Value2, поскольку он всегда будет возвращать фактическое значение ячейки.

Свойство Range

Рабочий лист имеет свойство Range, которое можно использовать для доступа к ячейкам в VBA. Свойство Range принимает тот же аргумент, что и большинство функций Excel Worksheet, например: «А1», «А3: С6» и т.д.

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

Как видно из кода, Range является членом Worksheets, которая, в свою очередь, является членом Workbook. Иерархия такая же, как и в Excel, поэтому должно быть легко понять. Чтобы сделать что-то с Range, вы должны сначала указать рабочую книгу и рабочий лист, которому она принадлежит.

В оставшейся части этой статьи я буду использовать кодовое имя для ссылки на лист.

Следующий код показывает приведенный выше пример с использованием кодового имени рабочего листа, т.е. Лист1 вместо ThisWorkbook.Worksheets («Лист1»).

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

Свойство Cells рабочего листа

У Объекта листа есть другое свойство, называемое Cells, которое очень похоже на Range . Есть два отличия:

  1. Cells возвращают диапазон только одной ячейки.
  2. Cells принимает строку и столбец в качестве аргументов.

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

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

Например, если вы использовали макрос для вычисления суммы и каждый раз записывали ее в ячейку A10, тогда Range подойдет для этой задачи.

Использование свойства Cells полезно, если вы обращаетесь к ячейке по номеру, который может отличаться. Проще объяснить это на примере.

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

В приведенном выше примере мы используем номер для столбца, а не букву.

Чтобы использовать Range здесь, потребуется преобразовать эти значения в ссылку на буквенно-цифровую ячейку, например, «С1». Использование свойства Cells позволяет нам предоставить строку и номер столбца для доступа к ячейке.

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

Использование Cells и Range вместе

Как вы уже видели, вы можете получить доступ только к одной ячейке, используя свойство Cells. Если вы хотите вернуть диапазон ячеек, вы можете использовать Cells с Range следующим образом:

Как видите, вы предоставляете начальную и конечную ячейку диапазона. Иногда бывает сложно увидеть, с каким диапазоном вы имеете дело, когда значением являются все числа. Range имеет свойство Address, которое отображает буквенно-цифровую ячейку для любого диапазона. Это может пригодиться, когда вы впервые отлаживаете или пишете код.

В следующем примере мы распечатываем адрес используемых нами диапазонов.

В примере я использовал Debug.Print для печати в Immediate Window. Для просмотра этого окна выберите «View» -> «в Immediate Window» (Ctrl + G).

Свойство Offset диапазона

У диапазона есть свойство, которое называется Offset. Термин «Offset» относится к отсчету от исходной позиции. Он часто используется в определенных областях программирования. С помощью свойства «Offset» вы можете получить диапазон ячеек того же размера и на определенном расстоянии от текущего диапазона. Это полезно, потому что иногда вы можете выбрать диапазон на основе определенного условия. Например, на скриншоте ниже есть столбец для каждого дня недели. Учитывая номер дня (т.е. понедельник = 1, вторник = 2 и т.д.). Нам нужно записать значение в правильный столбец.

Сначала мы попытаемся сделать это без использования Offset.

Как видно из примера, нам нужно добавить строку для каждого возможного варианта. Это не идеальная ситуация. Использование свойства Offset обеспечивает более чистое решение.

Как видите, это решение намного лучше. Если количество дней увеличилось, нам больше не нужно добавлять код. Чтобы Offset был полезен, должна быть какая-то связь между позициями ячеек. Если столбцы Day в приведенном выше примере были случайными, мы не могли бы использовать Offset. Мы должны были бы использовать первое решение.

Следует иметь в виду, что Offset сохраняет размер диапазона. Итак .Range («A1:A3»).Offset (1,1) возвращает диапазон B2:B4. Ниже приведены еще несколько примеров использования Offset.

Использование диапазона CurrentRegion

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

Строка или столбец пустых ячеек означает конец CurrentRegion.

Вы можете вручную проверить CurrentRegion в Excel, выбрав диапазон и нажав Ctrl + Shift + *.

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

Range («B3»). CurrentRegion вернет диапазон B3:D14

Range («D14»). CurrentRegion вернет диапазон B3:D14

Range («C8:C9»). CurrentRegion вернет диапазон B3:D14 и так далее

Как пользоваться

Мы получаем CurrentRegion следующим образом

Только чтение строк данных

Прочитать диапазон из второй строки, т.е. пропустить строку заголовка.

Удалить заголовок

Удалить строку заголовка (т.е. первую строку) из диапазона. Например, если диапазон — A1:D4, это возвратит A2:D4

Использование Rows и Columns в качестве Ranges

Если вы хотите что-то сделать со всей строкой или столбцом, вы можете использовать свойство «Rows и Columns» на рабочем листе. Они оба принимают один параметр — номер строки или столбца, к которому вы хотите получить доступ.

Использование Range вместо Worksheet

Вы также можете использовать Cella, Rows и Columns, как часть Range, а не как часть Worksheet. У вас может быть особая необходимость в этом, но в противном случае я бы избегал практики. Это делает код более сложным. Простой код — твой друг. Это уменьшает вероятность ошибок.

Код ниже выделит второй столбец диапазона полужирным. Поскольку диапазон имеет только две строки, весь столбец считается B1:B2

Чтение значений из одной ячейки в другую

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

В следующем примере показано, как это сделать:

Как видно из этого примера, невозможно читать из нескольких ячеек. Если вы хотите сделать это, вы можете использовать функцию копирования Range с параметром Destination.

Функция Copy копирует все, включая формат ячеек. Это тот же результат, что и ручное копирование и вставка выделения. Подробнее об этом вы можете узнать в разделе «Копирование и вставка ячеек»

Использование метода Range.Resize

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

Использование функции Resize позволяет изменить размер диапазона до заданного количества строк и столбцов.

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

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

Мы можем сделать изменение размера в одну строку, если нужно:

Чтение Value в переменные

Мы рассмотрели, как читать из одной клетки в другую. Вы также можете читать из ячейки в переменную. Переменная используется для хранения значений во время работы макроса. Обычно вы делаете это, когда хотите манипулировать данными перед тем, как их записать. Ниже приведен простой пример использования переменной. Как видите, значение элемента справа от равенства записывается в элементе слева от равенства.

Для чтения текста в переменную вы используете переменную типа String.

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

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

Как копировать и вставлять ячейки

Если вы хотите скопировать и вставить диапазон ячеек, вам не нужно выбирать их. Это распространенная ошибка, допущенная новыми пользователями VBA.

Вы можете просто скопировать ряд ячеек, как здесь:

При использовании этого метода копируется все — значения, форматы, формулы и так далее. Если вы хотите скопировать отдельные элементы, вы можете использовать свойство PasteSpecial диапазона.

В следующей таблице приведен полный список всех типов вставок.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×