Домой Цветы Объекты и их свойства в excel. Краткая характеристика MS Excel, основные возможности. Создание рабочего листа "Товары.xls"

Объекты и их свойства в excel. Краткая характеристика MS Excel, основные возможности. Создание рабочего листа "Товары.xls"

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

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

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

Способ 1: встроенный объект для ввода данных Excel

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

  1. Нужно отметить, что по умолчанию значок, который её запускает, скрыт и его нужно активировать. Для этого переходим во вкладку «Файл» , а затем щелкаем по пункту «Параметры» .
  2. В открывшемся окне параметров Эксель перемещаемся в раздел «Панель быстрого доступа» . Большую часть окна занимает обширная область настроек. В левой её части находятся инструменты, которые могут быть добавлены на панель быстрого доступа, а в правой – уже присутствующие.

    В поле «Выбрать команды из» устанавливаем значение «Команды не на ленте» . Далее из списка команд, расположенного в алфавитном порядке, находим и выделяем позицию «Форма…» . Затем жмем на кнопку «Добавить» .

  3. После этого нужный нам инструмент отобразится в правой части окна. Жмем на кнопку «OK» .
  4. Теперь данный инструмент располагается в окне Excel на панели быстрого доступа, и мы им можем воспользоваться. Он будет присутствовать при открытии любой книги данным экземпляром Excel.
  5. Теперь, чтобы инструмент понял, что именно ему нужно заполнять, следует оформить шапку таблицы и записать любое значение в ней. Пусть табличный массив у нас будет состоять из четырех столбцов, которые имеют названия «Наименование товара» , «Количество» , «Цена» и «Сумма» . Вводим данные названия в произвольный горизонтальный диапазон листа.
  6. Также, чтобы программа поняла, с каким именно диапазонам ей нужно будет работать, следует ввести любое значение в первую строку табличного массива.
  7. После этого выделяем любую ячейку заготовки таблицы и щелкаем на панели быстрого доступа по значку «Форма…» , который мы ранее активировали.
  8. Итак, открывается окно указанного инструмента. Как видим, данный объект имеет поля, которые соответствуют названиям столбцов нашего табличного массива. При этом первое поле уже заполнено значением, так как мы его ввели вручную на листе.
  9. Вводим значения, которые считаем нужными и в остальные поля, после чего жмем на кнопку «Добавить» .
  10. После этого, как видим, в первую строку таблицы были автоматически перенесены введенные значения, а в форме произошел переход к следующему блоку полей, который соответствуют второй строке табличного массива.
  11. Заполняем окно инструмента теми значениями, которые хотим видеть во второй строке табличной области, и снова щелкаем по кнопке «Добавить» .
  12. Как видим, значения второй строчки тоже были добавлены, причем нам даже не пришлось переставлять курсор в самой таблице.
  13. Таким образом, заполняем табличный массив всеми значениями, которые хотим в неё ввести.
  14. Кроме того, при желании, можно производить навигацию по ранее введенным значениям с помощью кнопок «Назад» и «Далее» или вертикальной полосы прокрутки.
  15. При необходимости можно откорректировать любое значение в табличном массиве, изменив его в форме. Чтобы изменения отобразились на листе, после внесения их в соответствующий блок инструмента, жмем на кнопку «Добавить» .
  16. Как видим, изменение сразу произошло и в табличной области.
  17. Если нам нужно удалить, какую-то строчку, то через кнопки навигации или полосу прокрутки переходим к соответствующему ей блоку полей в форме. После этого щелкаем по кнопке «Удалить» в окошке инструмента.
  18. Открывается диалоговое окно предупреждения, в котором сообщается, что строка будет удалена. Если вы уверены в своих действиях, то жмите на кнопку «OK» .
  19. Как видим, строчка была извлечена из табличного диапазона. После того, как заполнение и редактирование закончено, можно выходить из окна инструмента, нажав на кнопку «Закрыть» .
  20. После этого для предания табличному массиву более наглядного визуального вида можно произвести форматирование.

Способ 2: создание пользовательской формы

Кроме того, с помощью макроса и ряда других инструментов существует возможность создать собственную пользовательскую форму для заполнения табличной области. Она будет создаваться прямо на листе, и представлять собой её диапазон. С помощью данного инструмента пользователь сам сможет реализовать те возможности, которые считает нужными. По функционалу он практически ни в чем не будет уступать встроенному аналогу Excel, а кое в чем, возможно, превосходить его. Единственный недостаток состоит в том, что для каждого табличного массива придется составлять отдельную форму, а не применять один и тот же шаблон, как это возможно при использовании стандартного варианта.

  1. Как и в предыдущем способе, прежде всего, нужно составить шапку будущей таблицы на листе. Она будет состоять из пяти ячеек с именами: «№ п/п» , «Наименование товара» , «Количество» , «Цена» , «Сумма» .
  2. Далее нужно из нашего табличного массива сделать так называемую «умную» таблицу, с возможностью автоматического добавления строчек при заполнении соседних диапазонов или ячеек данными. Для этого выделяем шапку и, находясь во вкладке «Главная» , жмем на кнопку «Форматировать как таблицу» в блоке инструментов «Стили» . После этого открывается список доступных вариантов стилей. На функционал выбор одного из них никак не повлияет, поэтому выбираем просто тот вариант, который считаем более подходящим.
  3. Затем открывается небольшое окошко форматирования таблицы. В нем указан диапазон, который мы ранее выделили, то есть, диапазон шапки. Как правило, в данном поле заполнено все верно. Но нам следует установить галочку около параметра «Таблица с заголовками» . После этого жмем на кнопку «OK» .
  4. Итак, наш диапазон отформатирован, как «умная» таблица, свидетельством чему является даже изменение визуального отображения. Как видим, помимо прочего, около каждого названия заголовка столбцов появились значки фильтрации. Их следует отключить. Для этого выделяем любую ячейку «умной» таблицы и переходим во вкладку «Данные» . Там на ленте в блоке инструментов «Сортировка и фильтр» щелкаем по значку «Фильтр» .

    Существует ещё один вариант отключения фильтра. При этом не нужно даже будет переходить на другую вкладку, оставаясь во вкладке «Главная» . После выделения ячейки табличной области на ленте в блоке настроек «Редактирование» щелкаем по значку «Сортировка и фильтр» . В появившемся списке выбираем позицию «Фильтр» .

  5. Как видим, после этого действия значки фильтрации исчезли из шапки таблицы, как это и требовалось.
  6. Затем нам следует создать саму форму ввода данных. Она тоже будет представлять собой своего рода табличный массив, состоящий из двух столбцов. Наименования строк данного объекта будут соответствовать именам столбцов основной таблицы. Исключение составляют столбцы «№ п/п» и «Сумма» . Они будут отсутствовать. Нумерация первого из них будет происходить при помощи макроса, а расчет значений во втором будет производиться путем применения формулы умножения количества на цену.

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

  7. После этого создаем ещё одну небольшую таблицу. Она будет состоять из одного столбца и в ней разместится список товаров, которые мы будем выводить во вторую колонку основной таблицы. Для наглядности ячейку с заголовком данного перечня («Список товаров» ) можно залить цветом.
  8. Затем выделяем первую пустую ячейку объекта ввода значений. Переходим во вкладку «Данные» . Щелкаем по значку «Проверка данных» , который размещен на ленте в блоке инструментов «Работа с данными» .
  9. Запускается окно проверки вводимых данных. Кликаем по полю «Тип данных» , в котором по умолчанию установлен параметр «Любое значение» .
  10. Из раскрывшихся вариантов выбираем позицию «Список» .
  11. Как видим, после этого окно проверки вводимых значений несколько изменило свою конфигурацию. Появилось дополнительное поле «Источник» . Щелкаем по пиктограмме справа от него левой клавишей мыши.
  12. Затем окно проверки вводимых значений сворачивается. Выделяем курсором с зажатой левой клавишей мыши перечень данных, которые размещены на листе в дополнительной табличной области «Список товаров» . После этого опять жмем на пиктограмму справа от поля, в котором появился адрес выделенного диапазона.
  13. Происходит возврат к окошку проверки вводимых значений. Как видим, координаты выделенного диапазона в нем уже отображены в поле «Источник» . Кликаем по кнопке «OK» внизу окна.
  14. Теперь справа от выделенной пустой ячейки объекта ввода данных появилась пиктограмма в виде треугольника. При клике на неё открывается выпадающий список, состоящий из названий, которые подтягиваются из табличного массива «Список товаров» . Произвольные данные в указанную ячейку теперь внести невозможно, а только можно выбрать из представленного списка нужную позицию. Выбираем пункт в выпадающем списке.
  15. Как видим, выбранная позиция тут же отобразилась в поле «Наименование товара» .
  16. Далее нам нужно будет присвоить имена тем трем ячейкам формы ввода, куда мы будем вводить данные. Выделяем первую ячейку, где уже установлено в нашем случае наименование «Картофель» . Далее переходим в поле наименования диапазонов. Оно расположено в левой части окна Excel на том же уровне, что и строка формул. Вводим туда произвольное название. Это может быть любое наименование на латинице, в котором нет пробелов, но лучше все-таки использовать названия близкие к решаемым данным элементом задачам. Поэтому первую ячейку, в которой содержится название товара, назовем «Name» . Пишем данное наименование в поле и жмем на клавишу Enter на клавиатуре.
  17. Точно таким же образом присваиваем ячейке, в которую будем вводить количество товара, имя «Volum» .
  18. А ячейке с ценой – «Price» .
  19. После этого точно таким же образом даем название всему диапазону из вышеуказанных трех ячеек. Прежде всего, выделим, а потом дадим ему наименование в специальном поле. Пусть это будет имя «Diapason» .
  20. После последнего действия обязательно сохраняем документ, чтобы названия, которые мы присвоили, смог воспринимать макрос, созданный нами в дальнейшем. Для сохранения переходим во вкладку «Файл» и кликаем по пункту «Сохранить как…» .
  21. В открывшемся окне сохранения в поле «Тип файлов» выбираем значение «Книга Excel с поддержкой макросов (.xlsm)» . Далее жмем на кнопку «Сохранить» .
  22. Затем вам следует в своей версии Excel и включить вкладку «Разработчик» , если вы это до сих пор не сделали. Дело в том, что обе эти функции по умолчанию в программе отключены, и их активацию нужно выполнять принудительно в окне параметров Excel.
  23. После того, как вы сделали это, переходим во вкладку «Разработчик» . Кликаем по большому значку «Visual Basic» , который расположен на ленте в блоке инструментов «Код» .
  24. Последнее действие приводит к тому, что запускается редактор макросов VBA. В области «Project» , которая расположена в верхней левой части окна, выделяем имя того листа, где располагаются наши таблицы. В данном случае это «Лист 1» .
  25. После этого переходим к левой нижней области окна под названием «Properties» . Тут расположены настройки выделенного листа. В поле «(Name)» следует заменить кириллическое наименование («Лист1» ) на название, написанное на латинице. Название можно дать любое, которое вам будет удобнее, главное, чтобы в нем были исключительно символы латиницы или цифры и отсутствовали другие знаки или пробелы. Именно с этим именем будет работать макрос. Пусть в нашем случае данным названием будет «Producty» , хотя вы можете выбрать и любое другое, соответствующее условиям, которые были описаны выше.

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

    Как видим, после этого автоматически изменится и наименование Листа 1 в области «Project» , на то, которое мы только что задали в настройках.

  26. Затем переходим в центральную область окна. Именно тут нам нужно будет записать сам код макроса. Если поле редактора кода белого цвета в указанной области не отображается, как в нашем случае, то жмем на функциональную клавишу F7 и оно появится.
  27. Теперь для конкретно нашего примера нужно записать в поле следующий код:

    Sub DataEntryForm()
    Dim nextRow As Long
    nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
    With Producty
    If .Range("A2").Value = "" And .Range("B2").Value = "" Then
    nextRow = nextRow - 1
    End If
    Producty.Range("Name").Copy




    .Range("A2").Formula = "=IF(ISBLANK(B2), """", COUNTA($B$2:B2))"
    If nextRow > 2 Then
    Range("A2").Select


    End If
    .Range("Diapason").ClearContents
    End With
    End Sub

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

    Итак, первая строка:

    Sub DataEntryForm()

    «DataEntryForm» — это название самого макроса. Вы можете оставить его как есть, а можете заменить на любое другое, которое соответствует общим правилам создания наименований макросов (отсутствие пробелов, использование только букв латинского алфавита и т.д.). Изменение наименования ни на что не повлияет.

    Везде, где встречается в коде слово «Producty» вы должны его заменить на то наименование, которое ранее присвоили для своего листа в поле «(Name)» области «Properties» редактора макросов. Естественно, это нужно делать только в том случае, если вы назвали лист по-другому.

    Теперь рассмотрим такую строку:

    nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row

    Цифра «2» в данной строчке означает второй столбец листа. Именно в этом столбце находится колонка «Наименование товара» . По ней мы будем считать количество рядов. Поэтому, если в вашем случае аналогичный столбец имеет другой порядок по счету, то нужно ввести соответствующее число. Значение «End(xlUp).Offset(1, 0).Row» в любом случае оставляем без изменений.

    If .Range("A2").Value = "" And .Range("B2").Value = "" Then

    «A2» — это координаты первой ячейки, в которой будет выводиться нумерация строк. «B2» — это координаты первой ячейки, по которой будет производиться вывод данных («Наименование товара» ). Если они у вас отличаются, то введите вместо этих координат свои данные.

    Переходим к строке

    Producty.Range("Name").Copy

    В ней параметр «Name» означат имя, которое мы присвоили полю «Наименование товара» в форме ввода.

    В строках

    Cells(nextRow, 2).PasteSpecial Paste:=xlPasteValues
    .Cells(nextRow, 3).Value = Producty.Range("Volum").Value
    .Cells(nextRow, 4).Value = Producty.Range("Price").Value
    .Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value

    наименования «Volum» и «Price» означают названия, которые мы присвоили полям «Количество» и «Цена» в той же форме ввода.

    В этих же строках, которые мы указали выше, цифры «2» , «3» , «4» , «5» означают номера столбцов на листе Excel, соответствующих колонкам «Наименование товара» , «Количество» , «Цена» и «Сумма» . Поэтому, если в вашем случае таблица сдвинута, то нужно указать соответствующие номера столбцов. Если столбцов больше, то по аналогии нужно добавить её строки в код, если меньше – то убрать лишние.

    В строке производится умножение количества товара на его цену:

    Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value

    Результат, как видим из синтаксиса записи, будет выводиться в пятый столбец листа Excel.

    В этом выражении выполняется автоматическая нумерация строк:

    If nextRow > 2 Then
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A" & nextRow)
    Range("A2:A" & nextRow).Select
    End If

    Все значения «A2» означают адрес первой ячейки, где будет производиться нумерация, а координаты « — адрес всего столбца с нумерацией. Проверьте, где именно будет выводиться нумерация в вашей таблице и измените данные координаты в коде, если это необходимо.

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

    Range("Diapason").ClearContents

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

    Дальнейшая часть кода универсальна и во всех случаях будет вноситься без изменений.

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

  28. После этого возвращаемся на лист Excel. Теперь нам следует разместить кнопку, которая будет активировать созданный макрос. Для этого переходим во вкладку «Разработчик» . В блоке настроек «Элементы управления» на ленте кликаем по кнопке «Вставить» . Открывается перечень инструментов. В группе инструментов «Элементы управления формы» выбираем самый первый – «Кнопка» .
  29. Затем с зажатой левой клавишей мыши обводим курсором область, где хотим разместить кнопку запуска макроса, который будет производить перенос данных из формы в таблицу.
  30. После того, как область обведена, отпускаем клавишу мыши. Затем автоматически запускается окно назначения макроса объекту. Если в вашей книге применяется несколько макросов, то выбираем из списка название того, который мы выше создавали. У нас он называется «DataEntryForm» . Но в данном случае макрос один, поэтому просто выбираем его и жмем на кнопку «OK» внизу окна.
  31. После этого можно переименовать кнопку, как вы захотите, просто выделив её текущее название.

    В нашем случае, например, логично будет дать ей имя «Добавить» . Переименовываем и кликаем мышкой по любой свободной ячейке листа.

  32. Итак, наша форма полностью готова. Проверим, как она работает. Вводим в её поля необходимые значения и жмем на кнопку «Добавить» .
  33. Как видим, значения перемещены в таблицу, строке автоматически присвоен номер, сумма посчитана, поля формы очищены.
  34. Повторно заполняем форму и жмем на кнопку «Добавить» .
  35. Как видим, и вторая строка также добавлена в табличный массив. Это означает, что инструмент работает.

Термин Объекты 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 (на английском).

Объект Описание
Application Приложение Excel.
Workbooks Коллекция всех открытых в данный момент рабочих книг в текущем приложении Excel. Доступ к какой-то конкретной рабочей книге может быть осуществлён через объект Workbooks при помощи числового индекса рабочей книги или её имени, например, Workbooks(1) или Workbooks(“Книга1”) .
Workbook Объект Workbook – это рабочая книга. Доступ к ней может быть выполнен через коллекцию Workbooks при помощи числового индекса или имени рабочей книги (см. выше). Для доступа к активной в данный момент рабочей книге можно использовать ActiveWorkbook .

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

Sheets Объект Sheets – это коллекция всех листов рабочей книги. Это могут быть как рабочие листы, так и диаграммы на отдельном листе. Доступ к отдельному листу из коллекции Sheets можно получить при помощи числового индекса листа или его имени, например, Sheets(1) или Sheets(“Лист1”) .
Worksheets Объект Worksheets – это коллекция всех рабочих листов в рабочей книге (то есть, все листы, кроме диаграмм на отдельном листе). Доступ к отдельному рабочему листу из коллекции Worksheets можно получить при помощи числового индекса рабочего листа или его имени, например, Worksheets(1) или Worksheets(“Лист1”) .
Worksheet Объект Worksheet – это отдельный рабочий лист книги Excel. Доступ к нему можно получить при помощи числового индекса рабочего листа или его имени (см. выше).

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

Rows Объект Rows – это коллекция всех строк рабочего листа. Объект Range , состоящий из отдельной строки рабочего листа, может быть доступен по номеру этой строки, например, Rows(1) .
Columns Объект Columns – это коллекция всех столбцов рабочего листа. Объект Range , состоящий из отдельного столбца рабочего листа, может быть доступен по номеру этого столбца, например, Columns(1) .
Range Объект 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 через родительские объекты. Например, ссылку на диапазон ячеек можно записать вот так:

Workbooks("Книга1").Worksheets("Лист1").Range("A1:B10")

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

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

Dim DataWb As Workbook Set DataWb = Workbooks("Книга1.xlsx")

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

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

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

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

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

Range("A1:B10")

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

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

Sub ActivateAndSelect() Workbooks("Книга2").Activate Worksheets("Лист2").Select Worksheets("Лист2").Range("A1:B10").Select Worksheets("Лист2").Range("A5").Activate End Sub

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

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

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

Dim wbName As String wbName = ActiveWorkbook.Name

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

Workbooks("Книга1").Worksheets("Лист1")

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

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

ActiveSheet.Name = "Мой рабочий лист"

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

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

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

ActiveWorkbook.Save

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

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

ActiveWorkbook.SaveAs "Книга2", xlCSV

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

ActiveWorkbook.SaveAs Filename:="Книга2", :=xlCSV

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

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

Пример 1

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

"Пролистываем поочерёдно все рабочие листы активной рабочей книги "и выводим окно сообщения с именем каждого рабочего листа Dim wSheet As Worksheet For Each wSheet in Worksheets MsgBox "Найден рабочий лист: " & wSheet.Name Next wSheet

Пример 2

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

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

"Копируем диапазон ячеек из листа "Лист1" другой рабочей книги (с именем Data.xlsx) "и вставляем только значения на лист "Результаты" текущей рабочей книги (с именем CurrWb.xlsm) Dim dataWb As Workbook Set dataWb = Workbooks.Open("C:\Data") "Обратите внимание, что DataWb – это активная рабочая книга. "Следовательно, следующее действие выполняется с объектом Sheets в DataWb. Sheets("Лист1").Range("A1:B10").Copy "Вставляем значения, скопированные из диапазона ячеек, на рабочий лист "Результаты" "текущей рабочей книги. Обратите внимание, что рабочая книга CurrWb.xlsm не является "активной, поэтому должна быть указана в ссылке. Workbooks("CurrWb").Sheets("Результаты").Range("A1").PasteSpecial Paste:=xlPasteValues

Пример 3

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

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

"С помощью цикла просматриваем значения в столбце A на листе "Лист2", "выполняем с каждым из них арифметические операции и записываем результат "в столбец A активного рабочего листа (Лист1) Dim i As Integer Dim Col As Range Dim dVal As Double "Присваиваем переменной Col столбец A рабочего листа "Лист2" Set Col = Sheets("Лист2").Columns("A") i = 1 "Просматриваем последовательно все ячейки столбца Col до тех пор "пока не встретится пустая ячейка Do Until IsEmpty(Col.Cells(i)) "Выполняем арифметические операции со значением текущей ячейки dVal = Col.Cells(i).Value * 3 - 1 "Следующая команда записывает результат в столбец A "активного листа. Нет необходимости указывать в ссылке имя листа, "так как это активный лист рабочей книги. Cells(i, 1).Value = dVal i = i + 1 Loop

Многие пользователи Excel не видят разницы между понятиями «формат ячеек» и «тип данных». На самом деле это далеко не тождественные понятия, хотя, безусловно, соприкасающиеся. Давайте выясним, в чем суть типов данных, на какие категории они разделяются, и как можно с ними работать.

Тип данных — это характеристика информации, хранимой на листе. На основе этой характеристики программа определяет, каким образом обрабатывать то или иное значение.

Типы данных делятся на две большие группы: константы и формулы. Отличие между ними состоит в том, что формулы выводят значение в ячейку, которое может изменяться в зависимости от того, как будут изменяться аргументы в других ячейках. Константы – это постоянные значения, которые не меняются.

В свою очередь константы делятся на пять групп:

  • Текст;
  • Числовые данные;
  • Дата и время;
  • Логические данные;
  • Ошибочные значения.

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

Текстовые значения

Текстовый тип содержит символьные данные и не рассматривается Excel, как объект математических вычислений. Это информация в первую очередь для пользователя, а не для программы. Текстом могут являться любые символы, включая цифры, если они соответствующим образом отформатированы. В языке DAX этот вид данных относится к строчным значениям. Максимальная длина текста составляет 268435456 символов в одной ячейке.

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

Числовые данные

Для непосредственных вычислений используются числовые данные. Именно с ними Excel предпринимает различные математические операции (сложение, вычитание, умножение, деление, возведение в степень, извлечение корня и т.д.). Этот тип данных предназначен исключительно для записи чисел, но может содержать и вспомогательные символы (%, $ и др.). В отношении его можно использовать несколько видов форматов:

  • Собственно числовой;
  • Процентный;
  • Денежный;
  • Финансовый;
  • Дробный;
  • Экспоненциальный.

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

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

Дата и время

Ещё одним типом данных является формат времени и даты. Это как раз тот случай, когда типы данных и форматы совпадают. Он характеризуется тем, что с его помощью можно указывать на листе и проводить расчеты с датами и временем. Примечательно, что при вычислениях этот тип данных принимает сутки за единицу. Причем это касается не только дат, но и времени. Например, 12:30 рассматривается программой, как 0,52083 суток, а уже потом выводится в ячейку в привычном для пользователя виде.

Существует несколько видов форматирования для времени:

  • ч:мм:сс;
  • ч:мм;
  • ч:мм:сс AM/PM;
  • ч:мм AM/PM и др.

Аналогичная ситуация обстоит и с датами:

  • ДД.ММ.ГГГГ;
  • ДД.МММ
  • МММ.ГГ и др.

Есть и комбинированные форматы даты и времени, например ДД:ММ:ГГГГ ч:мм.

Также нужно учесть, что программа отображает как даты только значения, начиная с 01.01.1900.

Логические данные

Довольно интересным является тип логических данных. Он оперирует всего двумя значениями: «ИСТИНА» и «ЛОЖЬ» . Если утрировать, то это означает «событие настало» и «событие не настало». Функции, обрабатывая содержимое ячеек, которые содержат логические данные, производят те или иные вычисления.

Ошибочные значения

Отдельным типом данных являются ошибочные значения. В большинстве случаев они появляются, когда производится некорректная операция. Например, к таким некорректным операциям относится деление на ноль или введение функции без соблюдения её синтаксиса. Среди ошибочных значений выделяют следующие:

  • #ЗНАЧ! – применение неправильного вида аргумента для функции;
  • #ДЕЛ/О! – деление на 0;
  • #ЧИСЛО! – некорректные числовые данные;
  • #Н/Д – введено недоступное значение;
  • #ИМЯ? – ошибочное имя в формуле;
  • #ПУСТО! – некорректное введение адресов диапазонов;
  • #ССЫЛКА! – возникает при удалении ячеек, на которые ранее ссылалась формула.

Формулы

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

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

Отдельным видом формул являются функции. Это своеобразные подпрограммы, которые содержат установленный набор аргументов и обрабатывают их по определенному алгоритму. Функции можно вводить вручную в ячейку, поставив в ней предварительно знак «=» , а можно использовать для этих целей специальную графическую оболочку Мастер функций , который содержит весь перечень доступных в программе операторов, разбитых на категории.

С помощью Мастера функций можно совершить переход к окну аргумента конкретного оператора. В его поля вводятся данные или ссылки на ячейки, в которых эти данные содержатся. После нажатия на кнопку «OK» происходит выполнение заданной операции.

Как видим, в программе Excel существует две основные группы типов данных: константы и формулы. Они, в свою очередь делятся, на множество других видов. Каждый тип данных имеет свои свойства, с учетом которых программа обрабатывает их. Овладение умением распознавать и правильно работать с различными типами данных – это первоочередная задача любого пользователя, который желает научиться эффективно использовать Эксель по назначению.

Объектная модель MS Excel и других приложений Microsoft Office устроена следующим образом. На нулевом уровне иерархии существует центральный объект, в который встроены другие объекты, составляющие первый уровень иерархии. В каждый из объектов первого и последующих уровней могут быть встроены объекты следующего уровня. Встраивание реализуется с помощью свойств объектов. Свойства могут быть терминальными, не являющимися объектами, и свойствами, которые возвращают объекты при их вызове.

Объектов в этой иерархии очень много. Учитывая, что у каждого объекта, в свою очередь, большое количество свойств, методов и событий, изучать их достаточно сложно. Поэтому мы рассмотрим только основные объекты. На первых порах достаточно использовать Application (Приложение), Workbook (Рабочую книг}"), Worksheet (Рабочий лист), Range (Диапазон ячеек). Много в этой иерархии и коллекций: Workbooks – это коллекция рабочих книг, Worksheets – коллекция рабочих листов, Sheets – коллекция всех листов (рабочих листов и листов диаграмм), Charts – коллекция диаграмм.

Полное описание свойств, методов и событий каждого объекта можно найти в справочной системе. Для этого в редакторе Visual Basic откройте окно справки, в строке поиска наберите "Application Object Members" (для объекта Application) и перейдите но найденной гиперссылке. Для других объектов вместо Application используйте нужное имя класса.

Объект Application

На вершине объектной модели находится объект Application. Он представляет само приложение Excel. Через этот объект осуществляется доступ ко всем остальным объектам. Однако обычно свойства и методы этого объекта используют, не указывая слово Application. Например, вместо Application. ActiveCell.Value можно написать просто ActiveCell.Value. Основные свойства объекта приведены в табл. 12.21.

Таблица 12.21

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

Свойство

Описание

Active Workbook,

Активные объекты (рабочая книга, окно, лист, диаграмма, ячейка)

WorkSheetFunction

Представляет собой объект – контейнер, в котором находятся функции Excel. "Гак, например, мы можем обратиться в программе на VBA к функции Excel ФАКТР, вычисляющей факториал: WorksheetFunction.Fact(5). Имена функций в русскоязычной версии Excel не совпадают со свойствами объекта Worksheet Function. Чтобы узнать имя нужного свойства (имя функции в англоязычной версии), запишите макрос, использующий эту функцию на рабочем листе, и посмотрите имя функции в тексте макроса

Коллекция всех рабочих книг

Выделенный объект в активном окне. Тип объекта зависит от текущего выделения. Возвращается Nothing, если в активном окне нет выделенного объекта

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

For Each wb In Application.Workbooks

Application.Quit

Объект Workbook и коллекция Workbooks

Каждая рабочая книга представляется объектом Workbook, а их коллекция – объектом Workbooks. Методы коллекции Workbooks приведены в табл. 12.22.

Таблица 12.22

Методы коллекции Workbooks

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

Основные свойства и методы объекта Workbook приведены в табл. 12.23 и 12.24.

Таблица 12.23

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

Таблица 12.24

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

Чтобы включить содержимое из других программ, например Word или Excel можно использовать объект связывание и внедрение (OLE).

Интерфейс OLE поддерживается множеством различных программ и используется для помещения содержимого, созданного в одной программе, в другую программу. Например, можно вставить документ Office Word в книгу Office Excel. Чтобы посмотреть, содержимое какого типа можно вставить, на вкладке Вставка в группе Текст выберите элемент Объект . В поле Тип объекта отображаются только объекты программ, установленных на данном компьютере и поддерживающих интерфейс OLE.

Общие сведения о связанные и внедренные объекты

Данные, которые копируются в Excel из другой программы, поддерживающей интерфейс OLE (например, Word), можно вставить как связанный объект или внедренный объект. Основные различия между внедренными и связанными объектами заключаются в том, где хранятся данные и как обновляется объект после вставки в конечный файл. Внедренные объекты хранятся в той книге, в которую вставлены, и не обновляются. Связанные объекты остаются в отдельных файлах и могут обновляться.

Связанные и внедренные объекты в документе

1. У внедренного объекта нет связи с исходным файлом.

2. Связанный объект связан с исходных файлом.

3. При обновлении исходного файла обновляется связанный объект.

Когда следует использовать связанные объекты

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

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

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

Когда следует использовать внедренные объекты

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

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

Изменение способа отображения объекта OLE

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

Внедрение объекта на лист

Вставка ссылки на файл

Примечание:

Создание объекта в Excel


Внедрение объекта на лист

Вставка ссылки на файл

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

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

Создание объекта в Excel

Можно создать новую объекта на основании другая программа не выходя из книги. Например если вы хотите добавить более подробное описание диаграммы или таблицы, можно создать внедренный документ, например файл Word или PowerPoint в Excel. Вы можете установить для отображения объекта вправо на листе или добавить значок, который открывает файл.


Связывание или внедрение содержимого из другой программы с помощью OLE

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

Внедрение содержимого из другой программы

Связывание или внедрение Частичное содержимое из другой программы

Изменение способа отображения объекта OLE

    Объект тип объекта (например, Объект Документ ) и выберите команду Преобразовать .

    • Чтобы отобразить содержимое объекта, снимите флажок В виде значка .

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

Управление обновлением в связанных объектах

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

Установка обновления вручную связи с другой программой

Установка автоматического обновления связи с другой программой

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

Параметр Автоматически в Excel переопределяется параметром Обновить ссылки на другие документы .

Чтобы обеспечить автоматическое обновление автоматических связей с объектами OLE, сделайте следующее:

Немедленное обновление связи с программой

Изменение содержимого из программы OLE

В приложении Excel можно изменить содержимое, связанное или внедренное из другой программы.

Редактирование связанного объекта в исходной программе

Редактирование внедренного объекта в исходной программе

    Дважды щелкните внедренный объект, чтобы его открыть.

    Внесите необходимые изменения.

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

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

Примечание: Если дважды щелкнуть некоторые внедренные объекты, такие как видео- и звуковые клипы, начнется их воспроизведение, а не открытие. Чтобы изменить такой внедренный объект, щелкните правой кнопкой мыши значок или объект, наведите указатель на элемент Объект тип объекта (например, Объект Клип мультимедиа ), а затем выберите команду Изменить .

Редактирование внедренного объекта в программе, отличной от источника

    Выделите внедренный объект, который необходимо изменить.

    Щелкните правой кнопкой мыши значок или объект, наведите указатель на элемент Объект тип объекта (например, Объект Документ ) и выберите команду Преобразовать .

    Выполните одно из следующих действий.

    • Чтобы преобразовать внедренный объект в тип, выбранный в списке, установите флажок преобразовать в .

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

Выделение объекта OLE с помощью клавиатуры

    Нажмите клавиши CTRL+G для отображения диалогового окна Переход .

    Нажмите кнопку Выделить , выберите вариант объекты и нажмите кнопку ОК .

    Несколько раз нажмите клавишу TAB, пока не будет выделен требуемый объект.

    Нажмите клавиши SHIFT+F10.

    Наведите указатель на элемент Объект или Объект Диаграмма и выберите команду Изменить .

Проблема: при двойном щелчке по связанному или внедренному объекту появляется сообщение "Нельзя изменить"

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

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

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

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

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

Убедитесь, что имя исходного файла не изменилось. Если исходный файл, который требуется изменить, является связанным объектом, убедитесь, что он имеет то же имя, что и при создании связи, а также что он не был перемещен. Чтобы узнать имя исходного файла, выделите связанный объект, а затем на вкладке Данные в группе Подключения выберите команду Изменить связи . Если исходный файл был переименован или перемещен, воспользуйтесь кнопкой Смена источника в диалоговом окне Изменение связей , чтобы найти исходный файл и восстановить связь.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community , попросить помощи в сообществе Answers community , а также предложить новую функцию или улучшение на веб-сайте

Новое на сайте

>

Самое популярное