[an error occurred while processing this directive]

В начало

Введение

1-й час. Знакомство с Visual Basic for Applications

2-й час. Работа с макросами

3-й час. Работа с элементами управления

4-й час. Переменные и константы

5-й час. Ввод данных

6-й час. Логика условных операторов

7-й час. Циклические вычисления

8-й час. Введение в объекты

9-й час. Основные объекты Excel

10-й час. Объект Range

11-й час. Редактор Visual Basic

12-й час. Отладка программ

13-й час. Обработка ошибок

14-й час. Экранные формы

15-й час. Автоматизация экранных форм

16-й час. Панели инструментов

17-й час. Работа с меню

18-й час. Диаграммы

19-й час. Сводные таблицы

20-й час. Получение внешних данных

21-й час. Доступ к данным с помощью ADO

22-й час. Еще об ADO

23-й час. Автоматизация

24-й час. Выполнение процедур

Приложение. Ответы

Приложение. Ответы

Ответы к 1-му часу

Тесты

  1. Язык VBA применяется только в Excel?

Нет, он применим во всех приложениях Microsoft Office, включая Word и Access.

  1. На чем основывается язык VBA?

На языке программирования Visual Basic.

  1. Истинно или ложно следующее утверждение: встроенные функции Excel можно использовать в приложениях VBA?

Истинно.

  1. При редактировании кода макроса вы работаете в ________ (три слова).

редакторе Visual Basic.

  1. Назовите два ограничения записанных макросов.

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

Ответы ко 2-му часу

Тесты

  1. Истинно или ложно следующее утверждение: комбинации клавиш можноназначать макросам только в процессе записи макросов?

Ложно.

  1. Назовите три месторасположения, где можно сохранить создаваемый макрос.

Новый макрос можно сохранить в текущей рабочей книге, в новой рабочей книге либо в персональной книге макросов.

  1. В какой папке на жестком диске компьютера хранится личная книга макросов?

C:\Windows\Application Data\Microsoft\Excel\XLStart

  1. Истинно или ложно следующее утверждение: личная книга макросов автоматически открывается при загрузке программы Excel?

Истинно.

  1. Истинно или ложно следующее утверждение: Excel не позволяет назначать макросам уже используемые комбинации клавиш?

Ложно.

  1. Какова основная последовательность действий при назначении макроса графическому изображению.

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

Ответы к 3-му часу

Тесты

  1. Назовите два элемента управления, которые позволяют выбрать одну опцию из множества возможных опций.

Переключатели и списки.

  1. Истинно или ложно следующее утверждение: экранные формы можно создавать только редакторе Visual Basic?

Истинно.

  1. Как связать элемент управления с ячейкой рабочего листа?

Щелкните на элементе управления правой кнопкой мыши и в контекстном меню выберите команду Формат объекта. В диалоговом окне Формат элемента управления перейдите на вкладку Элемент управления и в поле Связь с ячейкой введите адрес соответствующей ячейки.

  1. Истинно или ложно следующее утверждение: сетка на экранной форме, которая видна в редакторе Visual Basic, также видна и при выполнении формы?

Ложно.

  1. ______ - это элемент управления, который отображает статический текст.

Надпись

Ответы к 4-му часу

Тесты

  1. Назовите три уровня видимости переменных.

Переменные, видимые на уровне процедуры (локальные переменные), переменные, видимые на уровне модуля, и глобальные (public) переменные.

  1. Какого типа переменную необходимо использовать для хранения целых чисел из диапазона от 0 до 100?

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

  1. Какое максимальное количество символов можно использовать при задании имен процедур, переменных и констант?

225.

  1. Истинно или ложно следующее утверждение: имя процедуры может начинаться с числа?

Ложно.

  1. Где объявляются глобальные переменные?

В области общих объявлений модуля.

  1. Истинно или ложно следующее утверждение: константы можно определить только в процедуре?

Ложно. Константы также можно объявлять в области общих объявлений модуля.

  1. Какую функциональную клавишу следует нажать для выполнения процедуры в редакторе Visual Basic?

<F5>.

Упражнение

Создайте новую процедуру с именем ПеремИКонст. Создайте переменную с именем sTest типа String. Создайте константу с именем iNumber типа Integer и положите ее равной 2. Установите значение переменной sTest как "Это простой тест". Выведите на экран значения переменной sTest и константы iNumber.

Полный код процедуры:

Public Sub ПеремИКонст()

 Dim sTest As String

 Const iNumber As Integer = 2

 sTest = "Это простой тест"

 MsgBox "Значение переменной sTest: " & STest

 MsgBox "Значение константы iNumber: " & iNumber

End Sub

Ответы к 5-му часу

Тесты

  1. Как можно объединить несколько строк?

Для объединения несколько текстовых строк в одну используется символ конкатенации (&).

  1. Какой тип данных возвращаемого значения окна сообщения?

Integer.

  1. Какой тип данных возвращаемого значения метода InputBox?

Тип возвращаемого значения зависит от значения аргумента Туре.

  1. Какие установки можно задать для окна сообщений с помощью аргумента кнопки?

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

  1. Истинно или ложно следующее утверждение: в VBA аргументы операторов и функций идентифицируются только своим местоположением в списке аргументов?

Ложно. Для идентификации аргументов можно использовать имена аргументов.

Упражнение

Создайте процедуру с именем ВашИнфо. Эта процедура должна выполнять следующие задачи.

  1. Отобразить три окна ввода. Первое окно предназначено для ввода имени пользователя. Во втором окне надо ввести название города, где живет пользователь, а в третьем - возраст пользователя.
  2. Отобразить введенную в трех окнах ввода информацию в одном окне сообщения.

Полный код процедуры:

Public Sub ВашИнфо()

 Dim sName As String

 Dim sCity As String

 Dim sAge As String

 sName = Application.InputBox("Введите ваше имя", Туре:=2)

 sCity = Application.InputBox("Введите название вашего города", Туре:=2)

 sAge = Application.InputBox("Введите ваш возраст", Type:=l + 2)

 MsgBox sName & " живет в " & sCity & ", его возраст " & sAge & _

  " года (лет)."

End Sub

Ответы к 6-му часу

Тесты

  1. Какие два основные оператора используются для управления потоком выполнения приложений?

Операторы If и Select Case.

  1. Истинно или ложно следующее утверждение: операторы If и Select Case чувствительны к регистру используемых значений?

Истинно.

  1. Какой метод позволяет отображать встроенные диалоговые окна Excel?

Метод Show.

  1. Как преобразовать текстовую строку, чтобы все символы были прописными?

Надо использовать функцию UCase.

Упражнение

Во-первых, создайте процедуру с именем ТестЩелчок. Эта процедура должна выводить на экран окно сообщения с текстом "Вы хотите продолжать?" и кнопками ОК и Отмена. Примените оператор If, чтобы узнать, на какой кнопке щелкнул пользователь, и выведите окно сообщения, показывающее выбор пользователя.

Далее, создайте еще одну процедуру под названием Скидка. Процедура должна вывести на экран окно ввода, предлагающее ввести категорию скидки: 1, 2, 3 или 4. С помощью оператора Select Case организуйте вывод величины скидки в окне сообщения. Категории 1 соответствует скидка 5%, категории 2 - 10%, категории 3 - 15% и категории 4 - 20%.

Полный код процедуры;

Sub ТестЩелчок()

 Dim iResponse As Integer

 iResponse = MsgBox("Вы хотите продолжать?", vbOKCancel)

 If iResponse =vbOk Then

  MsgBox "Щелчок на кнопке ОК."

 Else

  MsgBox "Щелчок на кнопке Cancel."

 End If

End Sub

Sub Скидка()

 Dim iDiscountCategory As Integer

 iDiscountCategory = InputBox("Введите категорию скидки; ")

 Select Case iDiscountCategory

  Case 1

   MsgBox "Скидка 5%"

  Case 2

   MsgBox "Скидка 10%"

  Case 3

   MsgBox "Скидка 15%"

  Case 4

   MsgBox "Скидка 20%"

  Case Else

   MsgBox "Неправильная категория скидки."

 End Select

End Sub

Ответы к 7-му часу

Тесты

  1. Назовите два основных типа операторов цикла в VBA.

Операторы типа For и операторы типа Do.

  1. Какой оператор позволяет досрочно выйти из цикла?

Оператор Exit For и оператор Exit Do.

  1. Какие есть два типа оператора Do... Loop?

Оператор Do While и оператор Do Until.

  1. Истинно или ложно следующее утверждение: логическое условие для оператора Do... Loop должно располагаться только в начале оператора?

Ложно.

Упражнение

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

Создайте другую процедуру и назовите ее Зарплата. Процедура должна считать недельную зарплату при условии почасовой оплаты. Минимальная стоимость рабочего часа, предположим, составляет 6 у.е. Примените оператор Do... Loop для управлением окном ввода, где пользователь должен ввести собственную почасовую ставку. Используйте суммарное количество рабочих часов в неделю, подсчитанное процедурой РабочиеЧасы. Итоговое значение выведите на экран с помощью окна сообщения.

Полный код процедур:

Public sngNumberOfHours As Single

Public Sub РабочиеЧасы()

 Dim iCounter As Integer

 For iCounter = 1 To 5

  sngNumberOfHours = sngNumberOfHours + InputBox ("Введите _

   количество отработанных часов в " & iCounter & "-й день")

 Next

 MsgBox "Всего за эту неделю отработано " & sngNumberOfHours & "часов"

End Sub

Public Sub Зарплата()

 Dim sngRate As Single

 Dim sngSalary As Single

 Do While sngRate < 6

  sngRate = InputBox("Введите почасовую ставку: ")

  If sngRate <6 Then

   MsgBox "Минимальная почасовая ставка 6.00"

  End If

 Loop

 MsgBox "Недельная зарплата составила " & sngRate * sngNumberOfHours

End Sub

Ответы к 8-му часу

Тесты

  1. Как задать значение свойству?

С помощью оператора Объект.имя_свойства = значение

  1. Как вызвать на исполнение метод?

С помощью оператора Объект.метод

  1. Какой оператор назначает объект переменной объекту?

Оператор Set.

  1. Истинно или ложно следующее утверждение: только объекты имеют свойства и методы, но не коллекции?

Ложно. Коллекции также имеют свойства и методы. Например, все коллекции имеют метод Addи свойство Count.

  1. Как создать новый элемент коллекции?

С помощью метода Add.

Упражнение

Используя окно просмотра объектов Object Browser или справочную систему Visual Basic, найдите следующие свойства.

Для объекта Application:

  • каталог, где инсталлирована программа Excel;
  • используемую операционную систему;
  • зарегистрированное имя пользователя программы Excel.

Для объекта Workbook:

  • где сохранена рабочая книга.

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

Полный код процедуры:

Sub СкажиМне()

 MsgBox "Excel инсталлирована в каталоге " & Application.Path

 MsgBox "Excel работает под управлением операционной системы " _

  & Application.OperatingSystem

 MsgBox Application.UserName & " - зарегистрированный пользователь."

 MsgBox "Эта рабочая книга имеет " & Worksheets.Count & " листа(ов)."

 MsgBox "Рабочая книга сохранена? " & ThisWorkbook.Saved

End Sub

Ответы к 9-му часу

Тесты

  1. Как в VBA применить функцию МАХ для нахождения максимального значения из диапазона ячеек А1:С5?

Используйте оператор

sngResult = Application.Max(Range("A1:C5"))

  1. Какой объект находится на высшем уровне иерархии объектов?

Объект Application.

  1. Какой метод применяется для создания новых рабочих книг и рабочих листов?

Метод Add.

  1. Как в VBA удалить рабочий лист из рабочей книги?

Надо применить метод Delete объекта Worksheet.

  1. Истинно или ложно следующее утверждение: из процедуры VBA нельзя вызывать на исполнение макросы, записанные в стиле Excel 4.0?

Ложно. Макросы, записанные в стиле Excel 4.0, можно выполнить с помощью метода Run объекта Application.

Упражнение

Создайте новую процедуру УпрЧас9, которая должна выполнить следующие действия:

  • создать новую рабочую книгу;
  • вставить в эту книгу новый рабочий лист;
  • дать новому рабочему листу ваше имя;
  • сохранить рабочую книгу под именем УпрЧас9.

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

Полный код процедур:

Sub УпрЧас9()

 Dim wbH9Workbook As Workbook

 Dim wsH9Worksheet As Worksheet

 Set wbH9Workbook = Workbooks.Add

 Set wsH9Worksheet = wbH9Workbook.Worksheets.Add

 wsH9Worksheet.Name = "Петя"

 wbH9Workbook.SaveAs ("УпрЧас9")

End Sub

Sub CoxpЧac9()

 If Workbookg("УпрЧас9.xls").Saved = True Then

  MsgBox "Эта рабочая книга уже сохранена."

 Else

  Workbooks("УпрЧас9.xls").Save

  MsgBox "Теперь рабочая книга сохранена."

 End If

End Sub

Ответы к 10-му часу

Тесты

  1. Истинно или ложно следующее утверждение: в VBA диапазон всегда состоит из многих ячеек?

Ложно. Одна ячейка также считается диапазоном.

  1. Какое свойство объекта Range позволяет определить адрес одного диапазона на основе адреса другого?

Свойство Offset.

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

Оператор For Each.

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

Свойство CurrentRegion.

  1. Как определить, какое количество ячеек составляют диапазон?

С помощью свойства Count.

  1. Какой метод применяется для удаления содержимого диапазона?

Метод Clear.

  1. Необходимо установить значения нескольких свойств определенного объекта. Как наиболее эффективно это сделать?

С помощью оператора With.

Упражнение

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

Ячейки Значения
А1 Товар
А2:А6 Названия каких-либо товаров
В1 Цеха
B2 15
B3 5
В4 3
В5 7
B6 9

Создайте процедуру с именем СнижениеЦен. Процедура должна уменьшить значения всех ячеек из диапазона В2:В6 на 5. Если цена будет меньше или равна нулю, выделите ее и название товара красным полужирным шрифтом. Также в этом случае (цена меньше или равна нулю) процедура должна вывести окно сообщения с соответствующим текстом предупреждения.

Полный код процедуры:

Sub СнижениеЦен()

 Dim х As Range

 Dim bProblems As Boolean

 For Each x In Range("B2:B6")

  x.Value = x.Value - 5

  If x.Value <= 0 Then

   x.Offset(0, -1).Select

   Selection.Resize(1, 2).Select

   With Selection

    .Font.Bold = True

    .Font.Color = vbRed

   End With

   bProblems = True

  End If

 Next

 If bProblems = True Then

  MsgBox "Некоторые цены получились меньше 0!"

 End If

End Sub

Ответы к 11-му часу

Тесты

  1. Кратко опишите три способа получения сведений из справочной системы VBA.

Посредством окна просмотра объектов Object Browser, с помощью клавиши <F5> в окне кода, через меню Help.

  1. Окно Object Browser можно использовать для просмотра списков объектов, событий, свойств и ___________.

методов

  1. Какую комбинацию клавиш надо нажать, чтобы в окне кода перейти в начало модуля?

<Ctrl+Home>

  1. __________ - маленькое окно с информацией о синтаксисе вводимой функции и ее аргументах.

Экранная подсказка

  1. Где находятся опции, управляющие такими средствами редактора Visual Basic, как экранная подсказка и автоматическая проверка синтаксиса?

В диалоговом окне Options.

  1. Истинно или ложно следующее утверждение: справочная система Visual Basic позволяет только просматривать приведенные там примеры кода, не разрешая их копирование и вставку в свои процедуры?

Ложно.

Упражнение

Используя справочную систему Visual Basic или окно Object Browser, найдите следующую информацию.

Метод, используемый для проверки орфографии: метод CheckSpelling объекта Application.

Свойство, возвращающее местоположение на жестком диске программы Excel: Path.

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

Метод, используемый для выполнения ручных вычислений (manual calculation): Calculate.

Свойство, применяемое для сокрытия рабочей книги: Visible.

Метод, используемый для удаления содержимого диапазона ячеек: Clear.

Ответы к 12-му часу

Тесты

  1. Как называется режим, в который переходит процедура, достигнув точкиостанова?

Режим останова.

  1. Как проследить за последовательностью выполняемых операторов?

В режиме пошагового выполнения процедуры.

  1. Как просмотреть значения переменных и свойств в окне Immediate?

Используется оператор Print (или ?).

  1. Какой еще, кроме установки точек останова, есть способ приостановить выполнение процедуры?

Использование наблюдаемых выражений.

  1. Истинно или ложно следующее утверждение: в режиме останова вы не можете просмотреть значения переменных?

Ложно. В режиме останова значения всех переменных и констант доступны для просмотра.

  1. Назовите два режима пошагового выполнения программ.

Режим Step Over и режим Step Into.

  1. Истинно или ложно следующее утверждение: наблюдаемые выражения никогда не воздействуют на ход выполнения процедуры?

Ложно. Значения наблюдаемых выражений можно изменить и поместить в выполняемую процедуру в режиме останова.

Упражнение

Создайте следующую процедуру.

Sub ПримерЧас12()

 Dim sWhichState As String

 sWhichState = InputBox("Введите название штата, куда доставляется груз")

 Select Case UCase (sWhichState)

  Case "FL"

   MsgBox "Стоимость доставки 3.50"

  Case "NY"

   MsgBox "Стоимость доставки 5.00"

  Case "OH"

   MsgBox "Стоимость доставки 2.00"

  Case "СА"

   MsgBox "Стоимость доставки 6.00"

  Case Else

   MsgBox "В этот штат доставка не предусмотрена"

 End Select

End Sub

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

Исправление в коде помечено полужирным шрифтом.

Ответы к 13-му часу

Тесты

  1. Опишите три основные этапа создания обработчика ошибок.

1.) Установка ловушек для ошибок; 2.) Написание процедуры обработки ошибок; 3.) Создание выхода из процедуры обработки ошибок.

  1. Назовите объект и его свойство, которые применяются для определения номера ошибки.

Свойство Number объекта Err.

  1. Какой оператор возвращает управление тому оператору, при выполнении которого произошла ошибка?

Оператор On Error Resume.

  1. Какой символ завершает имя метки?

Двоеточие.

  1. Какой оператор пропускает тот оператор, где произошла ошибка?

Оператор On Error Resume Next.

  1. Истинно или ложно следующее утверждение: каждая процедура должна иметь собственный обработчик ошибок?

Ложно. Можно создать централизованный обработчик ошибок.

  1. Какая логическая конструкция лучше всего подходит для создания обработчика ошибок?

Структура оператора Select Case.

Упражнение

Создайте следующую процедуру:

Sub ПроцСОшибкой()

 Workbooks.Open "С:\неттакогофайла.wkb"

End Sub

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

Полный код процедуры:

Sub ПроцСОшибкой()

 On Error GoTo MyErrorHandler

 Workbooks.Open "С: \неттакогофайла.wkb"

 Exit Sub

MyErrorHandler:

 MsgBox "Такого файла не существует."

 Resume Next

End Sub

Ответы к 14-му часу

Тесты

  1. Истинно или ложно следующее утверждение: сетка на экранной форме отображается и в редакторе Visual Basic, и при выполнении формы?

Ложно. Сетка на экранной форме отображается только в редакторе Visual Basic в режиме конструктора.

  1. Какое свойство применяется для назначения быстрых клавиш элементу управления?

Свойство Accelerator.

  1. Как указать, какая командная кнопка должна "сработать" при нажатии клавиши <Enter>?

Задав свойству Default значение True.

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

Надо задать значение True свойству Value.

  1. Истинно или ложно следующее утверждение: выравнивание элементов управления требует задания значений свойств?

Ложно. Элементы управления можно выровнять с помощью команд из меню Format или инструментов Align панели UserForm.

  1. Что произойдет, если для командной кнопки вы установите значение True свойства Cancel?

Процедура, назначенная этой командной кнопке, будет выполнена при нажатии пользователем клавиши <Esc>.

  1. Как задать порядок обхода элементов формы при нажатии клавиши <Tab>?

Простейший способ: создавать элементы формы в той последовательности, каков запланированный порядок обхода элементов формы при нажатии клавиши <Tab>.

Ответы к 15-му часу

Тесты

  1. Как установить блокировку элемента управления?

Надо задать свойству Enabled значение True.

  1. Как вызвать форму на экран?

С помощью метода Show формы.

  1. В какой процедуре находится код инициализации значений элементов формы?

В процедуре UserForm_Activate.

  1. Как удалить экранную форму из памяти компьютера?

С помощью метода Unload.

  1. Если необходимо вернуться к какому-либо элементу управления посредством кода, то какой метод следует применить?

Надо к элементу управления применить метод SetFocus.

  1. Где хранятся элементы списков?

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

  1. Какое свойство списков задает элемент, отображаемый в списке по умолчанию?

Свойство Listindex задает порядок отображения элементов в списке.

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

Обычно в процедуре, выполняемой по щелчку на кнопке Сохранить или ОК.

Упражнение

Создать процедуру с именем ПоказФормы, которая должна выводить на экран форму frmSplash, созданную как упражнение в 14-м часе.

Создайте код, посредством которого после щелчка на кнопке ОК в форме frmSplash будет открываться форма Гостевые расходы.

Код процедуры ПоказФормы:

Sub ПоказФормы()

 frmSplash.Show

End Sub

Код процедуры cmdOK_Click:

Private Sub cmdOK_Click()

 frmGuestExpenses.Show

 Unload Me

End Sub

Ответы к 16-му часу

Тесты

  1. Какой коллекции принадлежат панели инструментов как элементы?

Коллекции CommandBars.

  1. Какое свойство используется для назначения кнопке панели инструментов макроса или процедуры?

Свойство OnAction.

  1. Какой коллекции принадлежат кнопки панелей инструментов как элементы?

Коллекции Controls.

  1. Какой метод применяется для удаления панелей инструментов?

Метод Delete.

  1. Как вывести на экран панель инструментов с помощью кода VBA?

Надо задать свойству Visible панели инструментов значение True.

  1. Какое свойство применяется для задания значка, выводимого на кнопке?

Свойство FaceID.

  1. Истинно или ложно следующее утверждение: после создания панель инструментов автоматически выводится на экран?

Ложно. Для вывода на экран панели инструментов надо задать свойству Visible панели инструментов значение True.

Упражнение

Создайте процедуру с именем Панель_Час16. Эта процедура должна создать и вывести на экран панель инструментов 16-й час с тремя кнопками: Создать (ID равен 2530), Открыть (ID равен 23) и Сохранить (ID равен 3).

Создайте также процедуру ЗакройПанель, которая будет удалять панель 16-й час.

Полный код процедур:

Sub Панель_Час16()

 Dim cbHour16 As CommandBar

 Set cbHour16 = CommandBars.Add(Name:="16-й час")

 With cbHour16

  .Visible = True

  .Controls.Add Type:=msoControlButton, *ID:=2520, Before:=1

  .Controls.Add Type:=msoControlButton, ID:=23, Before:=2

  .Controls.Add Type:=msoControlButton, ID:=3, Before:=3

 End With

End Sub

Sub ЗакройПанель()

 CommandBars("16-й час").Delete

End Sub

Ответы к 17-му часу

Тесты

  1. Какой метод используется для создания меню?

Метод Add.

  1. Какое свойство пользовательской команды (элемента меню) назначает процедуру, выполняемую при выборе этой команды?

Свойство OnAction.

  1. Какой тип элемента управления задает пункт меню?

msoControlPopup.

  1. Как удалить строку меню с помощью кода VBA?

С помощью метода Delete.

  1. Какое диалоговое окно должно быть открыто при настройке меню?

Диалоговое окно Настройка, которое открывается с помощью команды Сервис > Настройка.

  1. Для создания командной панели вы используете метод Add. Какой аргумент этого метода (и как) надо задать, чтобы командная панель автоматически удалялась при закрытии приложения, содержащего эту панель?

Для этого необходимо задать необязательному аргументу Temporary метода Add значение True (no умолчанию этот аргумент имеет значение False).

  1. Как вывести на экран строку меню?

Надо задать свойству Visible строки меню значение True.

Упражнение

Напишите процедуру, которая создавала бы и выводила на экран строку меню (с именем Пример17), содержащую пункты Файл, Правка и Справка. Напишите еще одну процедуру для удаления этой строки меню. На свободном рабочем листе создайте две командные кнопки, которые выполняли бы эти процедуры.

Полный код процедур:

Sub Пример17()

 Dim Ex17menubar As CommandBar

 Dim mymenu As Object

 Dim mymenuitem As Object

 Set Ex17menubar = CommandBars.Add(Name:="Пример17", _

  Position:=msoBarTop, MenuBar:=True, Temporary:=True)

 With Ex17menubar

  .Controls.Add Type:=msoControlPopup, ID:=30002, Before:=1

  .Controls.Add Type:=msoControlPopup, ID:=ÒÒÑ, Before:=2

  .Controls.Add Type:=msoControlPopup, ID:=30010, Before:=3

  .Visible = True

 End With

 CommandBars("Worksheet Menu Bar").Visible = False

End Sub

Sub УдалениеПримера17()

 CommandBars("Пример17").Delete

End Sub

Ответы к 18-му часу

Тесты

  1. Какой оператор VBA используется для создания диаграммы?

Оператор Charts.Add.

  1. Какое свойство объекта Application возвращает текущую активную диаграмму?

Свойство ActiveChart.

  1. Какое свойство объекта Chart определяет тип создаваемой диаграммы?

Свойство ChartType.

  1. Какой метод объекта Chart управляет данными, отображаемыми в диаграмме?

Метод SourceData.

  1. Что из перечисленного не является свойством объекта Chart: ChartArea, ChartType, ChartLocation или ChartTitle?

ChartLocation.

  1. Истинно или ложно следующее утверждение: процесс построения диаграмм можно записать с помощью макроса?

Истинно. Это самый простой способ создания процедур, строящих диаграммы.

  1. Свойство _____________ объекта Workbook возвращает активную диаграмму.

ActiveChart.

Упражнение

Создайте экранную форму с пятью переключателями (рис. 18.5):

  • Круговая диаграмма
  • Объемная круговая диаграмма
  • Гистограмма
  • Гистограмма с накоплением
  • Объемная гистограмма с накоплением

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

Таблица свойств формы и ее элементов

Элемент Свойство Caption (Заголовок) Свойство Name (Имя)
Форма Выбор типа диаграммы frmChartType
Надпись (в верхней части формы) значение свойства Caption задается в процедуре lblInfo
Переключатель Круговая диаграмма optPie
Переключатель Объемная круговая диаграмма opt3DPie
Переключатель Гистограмма optClusterColumn
Переключатель Гистограмма с накоплением optStackedColumn
Переключатель Объемная гистограмма с накоплением opt3DStackedColumn
Командная кнопка ОК cmdOK
Командная кнопка Отмена cmdCancel

В области общих объявлений модуля необходимо ввести строку кода:

Dim rCurrRange As Range

Код процедуры ВыборТипаДиаграмм:

Sub ВыборТипаДиаграмм()

 Set rCurrRange = Selection

 frmChartType.Show

End Sub

Процедура инициализации экранной формы:

Private Sub UserForm_Initialize()

 If rCurrRange.Columns.Count = 2 Then

  optPie.Enabled = True

  optPie.Value = True

  opt3DPie.Enabled = True

  opt3DPie.Value = False

  optClusterColumn.Enabled = False

  optClusterColumn.Value = False

  optStackedColumn.Enabled = False

  optStackedColumn.Value = False

  opt3DStackedColumn.Enabled = False

  opt3DStackedColumn.Value = False

  lblInfo.Caption = "Для этих данных рекомендуемый тип диаграмма - круговая"

 ElseIf rCurrRange.Columns.Count > 2 Then

  optClusterColumn.Enabled = True

  optClustorColumn.Value = True

  optStackedColumn.Enabled = True

  optStackedColumn.Value = False

  opt3DStackedColumn.Enabled = True

  opt3DStackedColumn.Value = False

  optPie.Enabled = False

  optPie.Value = False

  opt3DPie.Enabled = False

  opt3DPie.Value = False

  lblInfo.Caption = "Для этих данных рекомендуемый тип диаграммы - гистограмма"

 Else

  MsgBox "Выделенный диапазон не позволяет построить диаграмму"

  frmChartType.Hide

  End

 End If

End Sub

Код процедуры cmdOK_Click (построение диаграмм):

Private Sub cmdOK_Click()

 If optPie.Value = True Then

  Charts.Add

  ActiveChart.ChartType = xlPie

  ActiveChart.SetSourceDate Source:=rCurrRange, PlotBy:= xlColumns

  ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"

  ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowPercent, _

   LegendKey:=False, HasLeaderLines:=True

 ElseIf opt3DPie.Value = True Then

  Charts.Add

  ActiveChart.ChartType = xl3DPie

  ActiveChart.SetSourceDate Source:=rCurrRange, PlotBy:=xlColumns

  ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"

  ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowPercent, _

   LeqendKey:=False, HasLeaderLines:=True

 ElseIf optStackedColumn.Value = True Then

  Charts.Add

  ActiveChart.ChartType = xlColumnStacked

  ActiveChart.SetSourceDate Source:=rCurrRange

  ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"

 ElseIf optClusterColumn.Value = True Then

  Charts.Add

  ActiveChart.ChartType = xlColumnClustered

  ActiveChart.SetSourceDate Source:=rCurrRange

  ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"

 ElseIf opt3DStackedColumn.Value = True Then

  Charts.Add

  ActiveChart.ChartType = xl3DColumnStacked

  ActiveChart.SetSourceDate Source:=rCurrRange

  ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"

 End If

 With ActiveChart

  .HasTitle = True

  .ChartTitle.Characters.Text = "Объем продаж"

  .ChartTitle.Select

 End With

 Selection.AutoScaleFont = True

 With Selection.Font

  .Name = "Arial"

  .FontStyle = "полужирный курсив"

  .Size = 14

  .Strikethrough = False

  .Superscript = False

  .Subscript = False

  .OutlineFont = False

  .Shadow = False

  .Underline = xlUnderlineStyleNone

  .ColorIndex = xlAutomatic

  .Background = xlAutomatic

 End With

 frmChartType.Hide

End Sub

Код процедуры cmdCancel_Click:

Private Sub cmdCancel_Click()

 frmChartType.Hide

End Sub

Ответы к 19-му часу

Тесты

  1. Истинно или ложно следующее утверждение: сводную таблицу можно создать только на основе данных, которые записаны на рабочем листе Excel?

Ложно. Сводную таблицу можно создать на основе данных из разных источников, включая внешние базы данных и другие сводные таблицы.

  1. Назовите имена двух коллекций, которые необходимы для создания сводных таблиц.

Коллекция PivotCaches и коллекция PivotTables.

  1. Какое свойство объекта PivotField назначает поля данных областям сводной таблицы (т.е. областям страницы, строк, столбцов и данных)?

Свойство Orientation.

  1. Истинно или ложно следующее утверждение: в область Строка сводной таблицы можно поместить только одно поле данных?

Ложно. Во все области сводной таблицы можно помещать по несколько полей.

  1. Назовите четыре области сводной таблицы.

Области сводной таблицы следующие: Страница, Строка. Столбец и Данные.

  1. Какой метод создает отчет сводной таблицы?

Метод CreatePivotTable.

  1. Истинно или ложно следующее утверждение: для создания сводной таблицы можно записать соответствующий макрос?

Истинно. Запись макроса - простой путь написания процедуры, создающей сводную таблицу.

Упражнение

В таблицу данных, показанную на рис. 19.1, добавьте еще одно поле Изделия, где будут представлены изделия, составляющие категорию товара (рис. 19.7). Начните запись макроса, который на основе этой таблицы данных будет создавать сводную таблицу. При создании сводной таблицы руководствуйтесь рис. 19.8. Остановите запись макроса. Измените код макроса так, чтобы из рабочей книги были удалены все рабочие листы, кроме листа Данные, и сводной таблице задавалось имя Анализ_продаж.

Полный код процедур:

Sub СоздСводТабл()

 Dim x As Worksheet

 Application.DisplayAlerts = False

 For Each x In Worksheets

  If x.Name<>"Данные" Then

   x.Delete

  End If

 Next x

 Application.DisplayAlerts = True

 'В следующем операторе обратите внимание на задание диапазона

 'данных R1C1:R145C5 - у вас он может быть другим.

 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDataBase, _

  SourceData:="Данные!R1C1:R145C5").CreatePivotTable _

  TableDestination: = "", TableName: = "Анализ_продаж"

 ActiveSheet.PivotTableWizard TableDestination:= _

  ActiveSheet.Cells(3, 1)

 ActiveSheet.Cells(3, 1).Select

 ActiveSheet.PivotTables("Анализ_продаж").SmallGrid = False

 With ActiveSheet.PivotTables("Анализ_продаж").PivotFields("Год")

  .Orientation = xlPageField

  .Position = 1

 End With

 With ActiveSheet.PivotTables("Анализ_продаж"). _

  PivotFields("Район")

  .Orientation = xlColumnField

  .Position = 1

 End With

 With ActiveSheet.PivotTables("Анализ_продаж"). _

  PivotFields("Категория товара")

  .Orientation = xlColumnField

  .Position = 2

 End With

 With ActiveSheet.PivotTables("Анализ_продаж"). _

  PivotFields("Изделие")

  .Orientation = xlRowField

  .Position = 1

 End With

 With ActiveSheet.PivotTables("Анализ продаж"). _

  PivotFields("Объем продаж")

  .Orientation = xlDataField

  .Position = 1

 End With

End Sub

Ответы к 20-му часу

Тесты

  1. Назовите коллекцию, элемент которой создается методом Add в процедуре использования MS Query.

Коллекция QueryTables.

  1. Назовите имя свойства, которое содержит оператор Select при создании запроса.

Свойство CommandText.

  1. Истинно или ложно следующее утверждение: MS Query Может работать только с базами данных Access?

Ложно. MS Query может работать практически со всеми современными базами данных.

  1. Истинно или ложно следующее утверждение: MS Query может извлекать данные одновременно из нескольких таблиц базы данных?

Истинно.

  1. Какое основное преимущество импортирования внешних данных с помощью MS Query?

То, что процесс импортирования можно записать с помощью макроса.

  1. Назовите четыре различных способа извлечения внешних данных в Excel.

1) MS Query (Запрос Microsoft); 2) ADO (ActiveX Dam Objects - Объекты данных ActiveX); 3) DAO (Data Access Objects - Объекты доступа к данным); 4) ODBC (Open Database Connectivity - Взаимодействие открытых баз данных)

Упражнение

Создайте копию процедуры ПримерMSQuery и назовите ее СортировкаДанных. Создайте экранную форму с четырьмя переключателями:

  • Код продукта
  • Марка
  • Цена
  • На складе

Измените процедуру СортировкаДанных таким образом, чтобы извлекаемые данные сортировались по тому столбцу, которому соответствует выбранный переключатель в экранной форме.

В область общих объявлений модуля поместите строку кода

Public sSortChoice As String

Код процедуры СортировкаДанных:

Sub СортировкаДанных()

 Dim sngPrice As Single

 Dim sMessege As String

 Worksheets.Add

 sMessege = "Цена должна быть больше чем"

 sngPrice = Application.InputBox(sMessege, "Ввод значения цены", _

  Type:=1)

 frmSort.Show

 With ActiveSheet.QueryTables.Add(Connection:=Array(Array("ODBC; _

  DSN=База данных MS Access;DBQ=c:\Program Files\ _

  Microsoft Office\Office\Samples\Борей; _

  DefaultDir=c:\Program Files\Microsoft "), _

  Array("Office\Office\Samples;DriverId=25;FIL=MS Access; _

  MaxBufferSize=2048;PageTimeout=5;")), _

  Destination:=Range("A1")).CommandText - Array("SELECT _

  Товары.КодТовара, Товары.Марка, Товары.Цена, _

  Товары.НаСкладе" & Chr(13) & "" & Chr(10) & "FROM _

  'c:\program Files\Microsoft Office\Office\Samples\

  Борей'.Товары Товары" & Chr(13) & "" & Chr(10) & "WHERE _

  (Товары.Марка>=" & sngPrice & ")" & Chr(13) "" _

  & Chr(10) & "ORDER BY Товары." & sSortChoice)

  .Name = "Запрос из База данных MS Access"

  .FieldNames = True

  .RowNumbers = False

  .FillAdjacentFormulas = False

  .PreserveFormatting = True

  .RefreshOnFileOpen = False

  .BackgroundQuery = True

  .RefreshStyle = xlInsertDeleteCells

  .SavePassword = True

  .SaveData = True

  .AdjustColumnWidth = True

  .RefreshPeriod = 0

  .PreserveColumnInfo = True

  .Refresh BackgroundQuery:=False

 End With

End Sub

Код, ассоциированный с экранной формой (в процедуре СортировкаДанных она названа frmSort):

Private Sub cmdCancel_Click()

 frmSort.Hide

 End

End Sub

Private Sub cmdOK_Click()

 If optProductID = True Then

  sSortChoice = "КодТовара"

 ElseIf optProduct.Name = True Then

  sSortChoice = "Марка"

 ElseIf optUnitPrice = True Then

  sSortChoice = "Цена"

 Else

  sSortChoice = "НаСкладе"

 End If

 frmSort.Hide

End Sub

Ответы к 21-му часу

Тесты

  1. Какой аргумент метода Open используется для указания объема, из которого извлекаются данные?

Аргумент Source.

  1. Истинно или ложно следующее утверждение: для организации доступа к внешним данным с помощью ADO достаточно создать соответствующую процедуру?

Ложно. Необходима ей с установить ссылку на библиотеку Microsoft ActiveX Data Objects 2.0 Library.

  1. Какой объект сохранят информацию о проблемах, возникших при использовании ADO?

Объект Error.

  1. Истинно или ложно следующее утверждение: с помощью ADO можно получить доступ только к базам данных Microsoft Access?

Ложно. С помощью ADO можно получить доступ практически ко всем современным базам данных.

  1. Какой объект представляет массив данных, извлеченный из внешнего источника с помощью ADO?

Объект Recordset.

  1. Как прервать соединение с внешним источником данных?

С помощью оператора Close.

  1. Назовите четыре этапа работы с ADO.

1) Установление соединения с источником данных; 2) Получение доступа к. данным; 3) Извлечение определенных записей из источника данных; 4) Закрытие соединения с источником данных.

Упражнение

Создайте экранную форму с тремя переключателями Заказы, Поставщики, Товары (соответствуют таблицам в базе данных Борей). Напишите процедуру, которая импортировала бы данные из таблицы базы данных Борей в соответствии с выбранным переключателем.

Задайте экранной форме имя frmPickData, с ней ассоциированы следующие процедуры:

Private Sub cmdCancel_Click()

 frmPickData.Hide

End Sub

Private Sub cmdOK_Click()

 If optSuppliers.Value = True Then

  sUserChoice = "Заказы"

 ElseIf optProducts.Value = True Then

  sUserChoice = "Товары"

 Else

  sUserChoice = "Поставщики"

 End If

 frmPickData.Hide

 ИмпортДанных

End Sub

Полный код остальных процедур (повторен код процедуры-функции Поворот из 21-го часа):

Public sUserChoice As String

Sub ИмпортДанных()

 Dim rsData As ADODB.Recordset

 Set rsData = New ADODB.Recordset

 rsData.Open Source:= sUserChoice, _

  activeconnection: = "Provider=Microsoft.Jet.OLEDB.4.0; _

  Data Source=C:\Program Files\Microsoft _

  Office\Office\Samples\Борей.mdb", _

  CursorType:=adOpenStatic, _

  LockType:=adLockOptimistic, _

  Options:=adCmdTable

 With Worksheets("Лист!")

  .Range("A1").CurrentRegion.Clear _

   Application.Intersect(.Range(.Rows(1), _

   .Rows(rsData.RecordCount)), _

   .Range(.Columns(1), .Columns(rsData.Fields.Count))). _

   Value = Поворот (rsData.GetRows _

   (rsData.RecordCount))

 End With

 rsData.Close

End Sub

Function Поворот (ByRef ArrayOriginal As Variant) As Variant

 Dim x As Integer

 Dim у As Integer

 Dim i As Integer

 Dim j As Integer

 Dim ArrayTranspose() As Variant

 x = Ubound(ArrayOriginal, 1)

 у = Ubound(ArrayOriginal, 2)

 ReDim ArrayTranspose(y, x)

 For i = 0 To x

  For j = 0 То у

   ArrayTranspose(j, i) = ArrayOriginal(i, j)

  Next

 Next

 Поворот = ArrayTranspose

End Function

Ответы к 22-му часу

Тесты

  1. Какой метод применяется для перемещения к последней записи в наборе извлекаемых записей?

Метод MoveLast.

  1. Как определить, где начало набора записей?

Проверяется свойство BOF объекта Recordset: в начале набора записей оно имеет значение True.

  1. Какой метод применяется для сохранения изменений в наборе записей?

Метод Update.

  1. Какое свойство объекта Recordset хранит информацию о местоположении текущей записи?

Свойство Bookmark.

  1. Какой метод используется для организации поиска данных в наборе записей?

Метод Find.

  1. Какое свойства объекта Field используется для возврата значения поля?

Свойство Value.

  1. Истинно или ложно следующее утверждение: данные из извлекаемого набора записей можно вставить только в рабочий лист inn в экранную форму?

Истинно. В приложениях Excel импортируемые данные можно вставить только в рабочий лист или в экранную форму.

Упражнение

Добавьте новый рабочий лист в книгу и назовите его Запрос Товары. В ячейки A1, B1, C1 и D1 введите заголовки будущей таблицы: Код товара, Марка, Цена, Есть на складе соответственно. Измените процедуру cmdOK_Click так, чтобы она при щелчке на кнопке ОК переписывала информацию из экранной формы в рабочий лист Запрос Товары.

Полный код процедуры:

Private Sub cmdOK_Click()

 Dim iNumRows As Integer

 Worksheets ("Запрос Товары").Activate

 Range("A1").Select

 Selection.CurrentRegion.Select

 iNumRows = Selection.Rows.Count

 Range("A1").Select

 Selection.Offset(iNumRows, 0).Value = txtProductID.Text

 Selection.Offset(iNumRows, 1).Value = txtProductName.Text

 Selection.Offset(iNumRows, 2).Value = txtUnitPrice.Text

 frmProductInfo.Hide

 cnnProduct.Close

End Sub

Ответы к 23-му часу

Тесты

  1. Какой оператор применяется для создания экземпляра приложения-сервера?

Оператор CreateObject.

  1. Истинно или ложно следующее утверждение: кроме объектов Excel и VBA в окне просмотра объектов можно просматривать только объекты библиотек, на которые созданы ссылки?

Истинно.

  1. В примере этого часа программа Excel играла роль _________ приложения (приложения-________).

управляющего (клиента)

  1. Истинно или ложно следующее утверждение: Excel можно использовать только как приложение-клиент?

Ложно. Excel можно использовать и как приложение-клиент, и как приложение-сервер.

  1. Как установить ссылку на библиотеку объектов?

В редакторе Visual Basic надо выполнить команду Tools > References.

  1. Истинно или ложно следующее утверждение: чтобы создать доступ к программе Word из другого приложения, надо применить технологию автоматизации?

Истинно.

  1. Истинно или ложно следующее утверждение: все приложения Microsoft Office в той или иной степени поддерживают технологию автоматизации?

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

Упражнение

Создайте таблицу данных Excel, показанную на рис. 23.5. Создайте текстовый документ Word, представленный на рис. 23.6. Вставьте в этот документ необходимые закладки. Создайте процедуру, которая копировала бы информацию из таблицы данных Excel и вставляла в соответствующие места документа Word.

Полный код процедуры (имена закладок совпадают с заголовками столбцов таблицы данных):

Sub Упражнение23()

 Dim y As Word.Application

 Set y = CreateObject("Word.Application")

 With у

  .Visible = True

  'В следующем операторе путь к текстовому файлу зависит от

  'того, где вы сохранили этот файл. При необходимости внесите

  'изменения в путь

  .Documents.OpenFileName:="C:\Мои документы\ТекстДок.dос"

  ActiveCell.Copy

  .Selection.GoTo What:=wdGoToBookmark, Name:="Номер_изделия"

  .Selection.Paste Application.CutCopyMode = False

  ActiveCell.Offset(0, 1).Select

  Selection.Copy

  .Selection.GoTo What:=wdGoToBookmark, Name:="Количество"

  .Selection.Paste Application.CutCopyMode = False

  ActiveCell.Offset(0, 1).Select

  Selection.Copy

  .Selection.GoTo What:=wdGoToBookmark, Name:="Цена"

  .Selection.Paste Application.CutCopyMode = False

  ActiveCell.Offset(0, 1).Select

  Selection.Copy

  .Selection.GoTo What:=wdGoToBookmark, Name:="Всего"

  .Selection.Paste

  Application.CutCopyMode = False

 End With

End Sub

Ответы к 24-му часу

Тесты

  1. Если необходимо выполнение определенной процедуры при импортировании данных с помощью MS Query, какое событие необходимо использовать?

Событие OnData.

  1. Истинно или ложно следующее утверждение: в рабочей книге может быть несколько процедур Auto_Open?

Ложно. В любой рабочей книге может быть только по одной процедуре Auto__Open и Auto_Close.

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

Для этого можно использовать OnCalculate, OnEntry, OnKey и OnSheetDeactivate.

  1. Истинно или ложно следующее утверждение: вы должны при использовании надстройки каждый раз загружать ее вручную?

Ложно.

  1. Предположим, что при закрытии рабочей книги необходимо сохранить внешний файл Word. Как это сделать?

Напишите процедуру, которая с помощью средств автоматизации будет сохранять внешний файл Word, и присвойте ей имя Auto_Close.

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

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

Упражнение

Откройте новую рабочую книгу и создайте процедуру Auto Open, которая должна выполнять следующие операции:

  • ввести текст Дата:, Имя:, Организация: в ячейки A1, A2 и A3 соответственно;
  • с помощью функции Now в ячейку В1 отобразить системное время компьютера;
  • использовать свойство UserName объекта Application для вставки имени пользователя в ячейку В2;
  • использовать свойство OrganizationName объекта Application для вставки названия организации в ячейку 83;
  • подогнать размеры столбцов А и В так, чтобы они полностью отображали введенные данные.

Полный код процедуры:

Sub Auto_Open()

 With ActiveSheet

  Range("A1").Value = "Дата:"

  Range("B1").FormulaR1C1 - "=NOW()"

  Range("A2").Value = "Имя:"

  Range("B2").FormulaR1C1 = Application.UserName

  Range("A3").Value = "Организация:"

  Range("B3"].FormulaR1C1 = Application.OrganizationName

  Columns("A:B").EntireColumn.AutoFit

 End With

End Sub

[an error occurred while processing this directive]