Задания для ms excel на vba

Содержание

  1. Задачи vba excel для начинающих
  2. Задачник на VBA (часть I)*
  3. Сборник задач по VBA

Задачи vba excel для начинающих

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

Тема 3: Решение нелинейных уравнений.

Цель. Рассмотреть методы решения нелинейных уравнений : метод деления отрезка пополам. Составить алгоритм решения и реализовать программы в VBA.

Интервал 1;2 . точность 10-5

1) Метод деления отрезка пополам.

Делим отрезок пополам:

Определяют знак функции f(x) и выбирают ту половину отрезка, на концах которого функция принимает значение разных знаков и деление повторяется.

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

Мы водим в лист MS Excel начальные данные: a, b,f(x), eps:

Создаем макрос: Сервис – Макрос – макросы. Задаем имя(нелинейное). Вводим программу:

If f(a) * f(X) > 0 Then

Cells(i + 3, 5) = f(X)

Loop While Abs(X — X0) > eps

f = 0.8 * X ^ 4 — 2 * X ^ 2

Запускаем программу: кнопка F5.

Сворачиваем программу и на листе MS Excel нам выдает данные:

Основан на предположении, что на маленьком отрезке функция изменяется линейно. Тогда кривую можно заменить хордой и в качестве приближенного значения принять точку пересечения хорды с осью абсцисс. Точка Х находиться по формуле Х=a-((b-a)*f(a))/(f(b)-f(a)). Определяют знак функции f(x) и выбирают ту половину отрезка, на концах которого функция принимает значение разных знаков и деление повторяется.

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

Эти два метода очень похожи и различаются только способом нахождения Х. все остальное то же самое.

Источник

Задачник на VBA (часть I)*

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования

«КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ЭНЕРГЕТИЧЕСКИЙ УНИВЕРСИТЕТ»

Н.К. ПЕТРОВА, М.М. ВОЛЧЕНКО

ПРОГРАММИРОВАНИЕ НА VBA В ПРИМЕРАХ И ЗАДАЧАХ

ЧАСТЬ I. БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ

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

«Информатика», «Компьютерные технологии в науке и образовании», «Программные средства информатики», «Новые информационные технологии»

УДК 681.3 ББК 32.973 П78

кандидат физико-математических наук, доцент Татарского государственного педагогического университета И.Н. Голицына ;

кандидат физико-математических наук, доцент Казанского государственного энергетического университета Р.А. Ишмуратов

П78 Петрова Н.К., Волченко М.М.

Программирование на VBA. Часть I. Базовые алгоритмические структуры. Практикум / Н.К. Петрова, М.М. Волченко. – Казань: Казан. гос. энерг. ун-т, 2010. – 55 с.

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

Содержание I части охватывает разделы программы, посвященные базовым алгоритмическим структурам: линейные программы, «ветвление», «цикл» — арифметический и итерационный. Изложение материала оформлено в виде отдельных разделов, в которых кратко представлены основные теоретические сведения.

Типовые задачи даются с подробными решениями. Имеется большое количество задач для самостоятельной работы. Задания делятся на три типа: 1 – умение «читать» готовые программы, 2 – разрабатывать программы по шаблонному алгоритму и 3 – разрабатывать программы с неявным алгоритмом.

Практикум предназначен для студентов всех специальностей КГЭУ, изучающих «Информатику».

УДК 681.3 ББК 32.973

© Казанский государственный энергетический университет, 2010

В учебной литературе имеется не так много пособий по практической работе на VBA, ориентированных на решение математических, инженерных задач. Данный практикум разработан с целью восполнить существующий пробел. Он предназначен для обучения – самостоятельно или под руководством преподавателя – основам алгоритмизации с использованием языка VBA (Visual Basic for Application) в приложении к одному из самых популярных приложений MS Office – MS Excel.

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

В тексте практикума приняты такие соглашения:

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

2. Курсивом выделены новые термины, имена переменных в текстовой части практикума, в комментариях к операторам программ.

3. Примеры разбираемых программ даются, как правило, с комментариями, при этом текст программы пишется курсивом. Тексты программ для самостоятельного разбора приводятся, как правило, в рамке.

4. При описании структуры операторов[ необязательные операнды ] взяты в квадратные скобки, альтернативные параметры – Yes | No –

написаны через вертикальную черту.

5. В тексте используются следующие сокращения:

ОП – оперативная память; ПК – компьютер; п/п – программа-процедура; п/ф – программа-функция

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

Общие теоретические сведения по программированию на VBA

I. Структура программ на VBA. Процедуры и функции пользователя

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

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

Программа-процедура (п/п) на VBA имеет следующую структуру:

[Private|Public] Sub ИмяПроцедуры ( СпискиПараметров ) >

где [Private|Public] – необязательные ключевые слова, определяющие область видимости программы; Sub – ключевое слово, определяющее тип п/п. ИмяПроцедуры – имя п/п (дает сам пользователь). СписокПараметров служит для передачи процедуре исходных данных для вычислений (может отсутствовать). Он состоит из элементов списка, разделенных запятыми.

Этот элемент списка параметров имеет синтаксис:

ИмяЭлемента [ As ТипДанных ]

где ИмяЭлемента – идентификатор; As – ключевое слово; ТипДанных – тип данных элемента списка (Табл. 1.1).

Процедура пользователя может быть вызвана из другой п/п оператором Call или указанием ее имени.

Источник

Сборник задач по VBA

Министерство образования Республики Беларусь Учреждение образования

« МОГИЛЕВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПРОДОВОЛЬСТВИЯ »

Кафедра « Информатика и вычислительная техника »

Сборник задач по VBA

Методические указания для студентов всех специальностей и аспирантов

Рассмотрены и рекомендованы к изданию на заседании кафедры

« Информатика и вычислительная техника » Протокол № 9 от « 14 » апреля 200 8 г .

кандидат технических наук , доцент , заведующий кафедрой « Автоматизированные системы управления » Белорусско — Российского университета

С . К . Крутолевич

кандидат физико — математических наук , доцент кафедры « Математического анализа , информатики и вычислительной техники » Могилевского государственного университета им . А . А . Кулешова С . Н . Батан

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

Visual Basic for Applications (VBA).

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

© УО « Могилевский государственный университет продовольствия », 2008

Основная цель данного методического указания – научить аспирантов и студентов программировать на языке Visual Basic for Applications (VBA).

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

В методическом указании предложено большое количество задач ( более 200), от простых до достаточно сложных .

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

Часть 1. СОЗДАНИЕ МАКРОСОВ

Начальные сведения по решению задач данной части содержатся в частях 1 и 2 учебно — методического пособия « Программирование на VBA».

Приступая к решению задач этого раздела , следует вспомнить , что :

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

ü записанные макрорекордером макросы не универсальны , поскольку они

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

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

ü применение макросов повышает скорость работы и , главное , точность и надежность .

1. Создайте макрос в Excel, который строит график функции y = x 2 — x — 2 на отрезке [-3,3].

2. Создайте макрос в Excel, который заливает ячейку B1 ярко — зеленым цветом , вычисляет разность ячеек A1, A2 и выводит результат в ячейку B1 шрифтом Arial, подчеркнутым , 14 размером .

3. Создайте макрос в Excel, вычисляющий площадь поверхности и объем цилиндра ( ячейки , содержащие r , h , должны быть подписаны ).

S = 2 × p × r × ( h + r )

4. Создайте макрос в Excel, который переводит вес из фунтов в килограммы ( один фунт равен 409,5 г ; ячейки , содержащие фунты и килограммы , должны быть подписаны ).

5. Создайте макрос в Excel, который выводит на синем фоне красными буквами в текущую ячейку сообщение «Visual Basic for Applications (VBA)»

шрифтом Times New Roman, обычным , 12 размером .

6. Создайте макрос в Excel, который выделенный диапазон ячеек одной строки A1:H1 сортирует по убыванию .

7. Создайте макрос в Excel, вычисляющий площадь треугольника :

S = 1 2 × a × h , где a – длина основания треугольника , h – его высота ( ячейки ,

содержащие a , h , должны быть подписаны ).

8. Создайте макрос в Excel, который выводит , начиная с текущей ячейки , четверостишие :

Унылая пора ! Очей очарованье ! Приятна мне твоя прощальная краса . Люблю я пышное природы увяданье , В багрец и золото одетые леса .

9. Создайте макрос в Excel, который вычисляет произведение чисел , расположенных в выделенном диапазоне 5- и ячеек .

10. Создайте макрос в Excel, который копирует ячейки A1:C2 и выводит их содержимое , начиная с ячейки F20.

11. Создайте макрос в Excel, который из последовательности чисел , расположенных в ячейках A1:A10, выводит последовательность с положительными числами в ячейки B1:B10.

12. Создайте макрос в Excel, вычисляющий объем и площадь поверхности шара ( ячейка , содержащая r , должна быть подписана ).

13. Создайте макрос в Excel, который переносит ячейки A1:A10 в ячейки

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

15. Создайте макрос в Excel, который переводит расстояния из километров в версты ( одна верста равна 1066,8 м .; ячейки , содержащие километры и версты , должны быть подписаны ).

16. Создайте макрос в Excel, который выделенный диапазон ячеек одного столбца B1:B10 сортирует по возрастанию .

17. Создайте макрос в Excel, который выводит , начиная с ячейки B3, на синем фоне серыми буквами 16 размером четверостишие :

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

18. Создайте макрос в Excel, вычисляющий объем конуса ( ячейки , содержащие r , h , должны быть подписаны ).

S = 1 3 × p× r 2 × h

19. Создайте макрос в Excel, который для ячеек A2:B10 строит точечную диаграмму ( значения X: A2:A10, значения Y: B2:B10).

20. Создайте макрос в Excel, который вычисляет сумму чисел , расположенных в ячейках A1:B10, и выводит результат в ячейку B11.

21. Создайте макрос в Excel на изменение ширины текущего столбца

( Ширина столбца 20).

22. Создайте макрос в Excel, который объединяет ячейки B7:H7 и выводит на желтом фоне синими буквами в объединенной ячейке сообщение « Создание макроса » шрифтом Times New Roman, обычным , 12 размером .

23. Создайте макрос в Excel, который для ячеек A2:C2 строит круговую диаграмму .

24. Создайте макрос в Excel на изменение высоты текущей строки ( Высота строки 25).

25. Создайте макрос в Excel, вычисляющий площадь круга : S = p× r 2 , где r – радиус круга ( ячейка , содержащая r , должна быть подписана ).

26. Создайте макрос в Excel, который строит график функции y = x 2 — 1 на

27. Создайте макрос в Excel на изменение угла наклона текста в текущей ячейке (90 градусов ).

28. Создайте макрос в Excel, вычисляющий объем полого цилиндра ( ячейки ,

содержащие r 1 , r 2 , h , должны быть подписаны ; r 1 − радиус цилиндра , r 2 − радиус отверстия , h − высота цилиндра ).

V = p × h × ( r 1 2 — r 2 2 )

29. Создайте макрос в Excel на добавление листа в книгу .

30. Создайте макрос в Excel, вычисляющий площадь трапеции : S = a + 2 b × h ,

где a , b – длины оснований , h – высота трапеции ( ячейки , содержащие a , b , h , должны быть подписаны ).

Часть 2. СОЗДАНИЕ ПРОГРАММ С ЛИНЕЙНОЙ СТРУКТУРОЙ

Начальные сведения по решению задач данной части содержатся в части 3 учебно — методического пособия « Программирование на VBA».

Приступая к решению задач этого раздела , следует вспомнить , что :

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

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

ü алгоритм программы с линейной структурой может быть представлен следующим образом :

Источник

Adblock
detector

Практическая
работа №  1

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

Цель работы: Научится создавать и выполнять макросы в Excel.

Пояснение к работе:

Термином макрос обычно
называют файл, хранящий последовательность действий, заданных пользователем
системы. Каждый макрос должен иметь собственное имя. С помощью макроса можно
автоматизировать типовые технологические этапы при работе с системой.   При
работе с Excel, как, впрочем, и с другими программами пакета Microsoft Office,
для создания макроса легче всего использовать автоматический режим его
создания, вызываемый из главного меню системы командами СЕРВИС, Макрос.
При первоначальном запуске системы макросы отсутствуют, поэтому диалоговое окно
<<Макрос>>, вызываемое пунктом Макросы… показывает
пустой список. Пункт меню Безопасность… открывает дополнительное меню,
позволяющее задавать уровень безопасности при использовании макросов. Известен
ряд компьютерных вирусов, маскирующихся под макросы, в связи с чем
разработчиками Excel предпринят ряд дополнительных мер защиты. Так, например,
может быть задан высокий, средний и низкий уровни безопасности при работе с
макросами (по умолчанию средний и рекомендуемый уровень безопасности). Если он
используется, то при загрузке файла с диска система попросит разрешение на
подключение макросов к программе. Если такое разрешение будет дано, то макрос
будет доступен в загружаемой таблице. Пункты меню Редактор Visual Basic и
Редактор сценариев вызывают соответствующие программы (они должны быть
установлены на компьютер отдельно с инсталляционных дискет и подключены к
операционной системе).

Если в меню СЕРВИС, Макрос выбрать
пункт Начать запись…, то откроется диалоговое окно, позволяющее задать
имя макроса и, при желании, комбинацию клавиш, с помощью которой он также может
вызван в обход пункта меню Макросы…. По умолчанию система предлагает
стандартное имя Макрос#. Во избежание недоразумений старайтесь задавать
собственные имена макросов, отличные от стандартных. Начиная с этого момента
все действия с рабочей книгой дополнительно записываются в файл макроса.
Остановить запись макроса можно кнопкой Остановить запись дополнительно
открывшейся панели инструментов или через аналогичный пункт главное меню СЕРВИС,
Макрос
. Записанный макрос может быть сохранен в текущей рабочей книге и
тогда он доступен в ней и других книгах в том случае, когда она открыта или в
личной книге макросов. В последнем случае он может быть доступен в любой
открытой книге.

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

Необходимо принять во внимание
существование двух возможных типов записи ссылок на ячейки в Excel: A1 и R1C1.
По умолчанию при программировании формул используется стиль A1, для которого
адрес каждой ячейки представляет собой строку символов, содержащую имя столбца
и номер строки. Использование этого стиля позволяют организовать относительную
и абсолютную адресацию к ячейкам таблицы (за счет введения в строку символа $).
Тем не менее, при записи макросов Excel использует тип ссылки R1C1. В
обозначении типа присутствуют первые буквы английских слов Row (строка) и
Column (колонка). В первую очередь обратите внимание на то, что, в отличие от
типа A1, при использовании типа ссылок R1C1 сначала записывается строка, а
потом столбец. При использовании абсолютной адресации после символов R и C
указывается собственно номер строки и столбца. Так, например, ячейка $B$3 имеет
адрес R3C2. При использовании относительной адресации в стиле R1C1 после
обозначения строки или колонки в квадратных скобках указывается смещение по
отношению к текущей ячейке. Так, например, если данные находятся в ячейке B3, а
ссылка на нее программируется в ячейке А5, то в формуле она запишется как
R[-2]C[1]. Эта запись может интерпретироваться как обращение к ячейке,
находящейся на две строки выше и одну колонку правее текущей. Соответственно
запись R[2]C[-1] означает обращение к ячейке на две строки ниже и одну колонку
левее (по отношению к активной ячейке A5 такая ячейка не существует).

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

Рисунок 1.

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

Первый
исполняемый оператор программы Range(«C2»).Select создан системой в
виде выражения, которое содержит в терминологии VBA свойство Range в сочетании
с методом Select. Обратите внимание на то, что свойство имеет записанный в
круглых скобках аргумент в виде строки символов и отделяется от метода точкой.
В нашем примере аргумент свойства представляет собой ссылку на ячейку в стиле
A1, с которой началось программирование макроса.

С помощью Help-системы
разберитесь с назначением свойства Range. Для этого установите в окне модуля
маркер на текст Range и нажмите клавишу F1. Если вы испытываете затруднения с
чтением текста на английском языке, который используется Help-системой, воспользуйтесь
дополнительной русскоязычной литературой, посвященной описанию языка VBA. В
этом случае удобно составлять собственное описание встречающихся англоязычных
терминов и хранить его в удобном месте (например, в виде отдельного файла
Excel).

Аналогично
изучите назначение метода Select.

Задание

Согласуйте с преподавателем выбранный
вами вариант задания (табл. 1). Предполагается, что в рамках одной учебной
группы варианты заданий не повторяются. Разработайте и заполните таблицу и
запрограммируйте в ней необходимые вычисления. При необходимости воспользуйтесь
функциями. Убедитесь в правильности вычислений. Оформите таблицу, задайте
шрифты, границы и т.п. В качестве примера будет рассматриваться таблица,
предназначенная для расчета налогов и определения суммы заработной платы.

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

Порядок выполнения работы

  1. Создайте новую рабочую книгу Excel. Сделайте ее настройку:
    выполните команду СЕРВИС, Параметры и в диалоговом окне выберите
    вкладку Общие, установив следующие параметры: Стиль ссылокR1C1:
    выключено.
  2. Листов в новой книге: 3.
  3. Стандартный шрифт: Arial Cyr, размер 10.
  4. Выберите рабочий каталог для сохранения новых книг.
  5. Введите имя пользователя.
  6. Выберите вкладку Вычисления, установив флажки следующих
    параметров: Вычисления: автоматически.
  7. Параметры книги: обновлять удаленные ссылки, сохранять значения
    внешних связей.

8. В меню СЕРВИС,
Макрос выберите пункт Начать запись…
. Задайте имя макроса.

9. Повторно
запрограммируйте формулы таблицы Excel и остановите запись макроса.

10. Командой Сервис,
Макрос, Редактор Visual Basic
запустите редактор Visual Basic. В окне проектов
(Project-VBAProject) (рис. 2) раскройте содержимое проекта VBAProject
(PERSONAL.XLS)
и ветвь Modules. В ее составе должен быть один
(например, Module1) или несколько модулей. Дважды щелкните левой клавишей мышки
по имени модуля. В ответ в правом верхнем окне должен появится его текст.
Просмотрите содержимое модулей и найдите записанный вами макрос.

11. Изучите
текст макроса.

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

13. Снова
удалите формулы из таблицы рабочего листа Excel. Перейдите в окно VBA,
установите маркер на первом операторе макроса. Выберите пункт Run, Run
Sub/User Form
и запустите модуль на выполнение. Перейдите в таблицу Excel и
убедитесь, что в результате работы макроса формулы в ней восстановились.

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

Задание на
выполнение работы  Таблица 1.

Номер варианта

Вид таблицы

1

Ведомость складских остатков (наименование, цена,
количество, отпускная цена, оптовая скидка)

2

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

3

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

4

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

5

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

6

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

7

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

8

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

9

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

10

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

11

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

12

Ведомость операций авиакассы (фамилия, направление,
рейс, дата вылета, время вылета, тариф авиакомпании, валюта тарифа, тариф в
рублях, аэропортовский сбор пункта отправления, валюта сбора пункта
отправления, сумма в рублях, аэропортовский сбор пункта прибытия, валюта
сбора пункта прибытия, сумма в рублях, стоимость трансфера, валюта трансфера,
сумма трансфера в рублях, комиссия кассы, валюта кассы, комиссия в рублях,
общая сумма операции).

13

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

14

Смета затрат на ремонт (номер операции, операция,
материалы, единица измерения, цена, стоимость, нормочасы, тариф, зарплата,
наценка, стоимость, скидка, к оплате).

15

Ведомость операций телефонной компании (абонент,
тарифный план, вид операции, тариф, время, цена операции, наценка, стоимость,
скидка, льгота, к оплате).

16

Ведомость комплектации изделия (наименование
комплектующего, количество, цена, количество на складе, стоимость складского
остатка, затраты, наценка, стоимость).

17

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

18

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

19

Список трудов (номер, название, место
опубликования, дата опубликования, вид публикации, номер страницы начала,
номер страницы конца, всего страниц, формат страницы, машинописных листов,
печатных листов, соавторы, доля автора, машинописных страниц автора, печатных
листов автора).

20

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

21

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

22

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

23

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

24

Ведомость банковских операций (фамилия, дата, вид
операции, валюта операции, сумма операции, сумма операции в рублях, комиссия
операции, валюта комиссии операции, комиссия операции в рублях).

25

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

26

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

Контрольные вопросы

1. В каком случае используется стиль
ссылок Excel :A1, а в каком R1C1?

2. В чем разница абсолютной и
относительной адресации ссылок в Excel?

3. Когда целесообразно использовать
абсолютную адресацию в Excel?

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

5. Каково назначение свойства Range?

6. Каково назначение метода Select?

7. Как вызвать систему помощи и
получить справку по конкретному выражению макроса?

8. Как можно запустить макрос на
выполнение?

9. Что такое построчный комментарий и
как он оформляется?

10. Какие существуют возможности для
оформления внешнего вида таблицы Excel перед ее публикацией в отчетной
документации?

     Содержание
отчета:

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

ПРАКТИЧЕСКАЯ РАБОТА №2

СОЗДАНИЕ НОВЫХ ДИАЛОГОВЫХ ОКОН

НА ОСНОВЕ ФОРМ ПОЛЬЗОВАТЕЛЯ

Цель: Изучить способы
ввода-вывода данных, свойства встроенных
объектов VBA: форм,
стандартных элементов управления «Надпись», «Поле» и
«Кнопка».

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

 Основные синтаксические принципы языка VBA:

Макросы в Excel пишутся на языке VBA, синтаксис которого
почти полностью идентичен синтаксису Visual Basic. Основные синтаксические
принципы этого языка:

·        
VBA нечувствителен к
регистру;

·        
чтобы закомментировать код
до конца строки, используется одинарная кавычка или команда REM;

·        
символьные значения должны
заключаться в двойные кавычки (“);

·        
максимальная длина любого
имени – 255 символов.

Оператор – наименьшая единица кода VBA.

Арифметических операторов 7: сложение +, вычитание -,
умножение *, деление /, возведение в степень ^, целочисленное деление (делит
первое число на второе, отбрасывая дробную часть), деление по модулю mod (делит
первую число на второе, возвращая только остаток от деления).

Переменные – это контейнеры для хранения данных. Переменные
объявляются следующим образом:

Dim имя_переменной As тип_переменной

Типы данных:

·        
числовые:

Byte – целое число от 0 до 255;

Integer – целое число от -32 768 до 32 767;

Long – большое целое число от
-2 147 483 648 до 2 147 483 647;

Single и Double – значения с плавающей запятой;

·        
строковые – String;

·        
дата и время – Data;

·        
логический – Boolean;

·        
объектный – Object –
хранит ссылку на любой объект в памяти;

·        
variant – специальный тип данных, который может хранить
любые другие типы данных;

·        
возведение в степень (^),
например
2^3 = 8;

·        
целочисленное деление ().
Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например,
52 = 2;

·        
получение остатка от
деления
Mod

Делит первое число на второе, возвращая только
остаток от деления. Например,
5
Mod 2 = 1
.

Ввод данных

Осуществляется с помощью функции InputBox():

InputBox(«Тестовая строка»).

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

S=InputBox(«Введите число»).

Так что в переменной s
сохранится тестовая строка, т.е. число в виде «12». Поэтому его нужно
преобразовать в число. Для этого используется функция Val:

A=val(s).

Эта функция возвращает число, полученное
преобразованием строки s. Если в s было, например, «12», то после использования
Val, в переменной А будет число 12.

Вывод данных

Используется функция MsgBox(«Тестовая строка» &
имя_переменной).

Задание 1

  1. Откройте новый документ в Excel.
  2. Откройте редактор Visual Basic, используя команду Вид ->
    Макросы ->
    Необходимо ввести имя нового макроса
    lab3
    и нажать кнопку Создать.
  3. В поле окна между словами Sub lab2   End Sub введите текст

MsgBox(«Hello»)

  1. Кликните на кнопке с зеленым треугольником («Выполнить Basic») в
    верхней панели для выполнения макроса.
  2. Программа запустится и откроется окно, которое создается функцией MsgBox.

Самостоятельно

Выведите
поздравление с Новым годом.

Задание 2

1.      
В этом же документе 
откройте редактор
Visual Basic, используя вкладку Разработчик ->
Visual Basic и отредактируйте только что созданный макрос.

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

Dim
a as Integer

Dim
s As String

s=InputBox(«Введите число»)

a
= val(s)

MsgBox a

  1. В первых строках объявляются переменные a и s. Первая имеет тип
    Integer (целое число), вторая – строка, в нее можно сохранять буквы или
    слова.
  2. Далее используем функцию InputBox, которая считывает то, что ввел
    пользователь. Но все, что вводит пользователь, считается строкой. Если
    вводит число, то оно представляется как «2», а все, что в «» считается
    числом. Поэтому результат ввода сохраняется в переменной s. Чтобы убрать
    «» с числа применяется функция val, она переводит строку в число. И теперь
    результат можно сохранить в переменную а.
  3.  Кликните на кнопке с зеленым треугольником («Выполнить Basic») в
    верхней панели для выполнения макроса.
  4.  Программа запустится и откроется окно, которое создается функцией
    InputBox (рис. 1). Обратите внимание, что текст,
    введенный в скобках функции, выводится как надпись в окне функции. В окне
    функции
    InputBox в поле для ввода введите число и нажмите
    кнопку «ОК».

Рис. 1. Окно функции InputBox

  1.  Откроется окно функции MsgBox с введенным ранее числом.

Самостоятельно

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

Задание 3

1. В данной работе необходимо создать форму поль­зователя, разместить
на ней элементы управления «Надпись»
и «Кнопка»
и изменить некоторые заданные по умолчанию свойства
объектов. Для этого:

а) перейдите из Excel в среду
программирования
VBA;

б) добавьте к проекту
форму (команда «
Insert/UserForm«). По­сле выполнения
этой команды на экране появляется стандартная
форма и панель
инструментов «Элементы управления»;

в) на панели
элементов выберите элемент управления «Надпись» и разместите его на форме;

г)  на панели элементов выберите элемент управления
«Кнопка»
и разместите его
на форме;

д) измените в окне свойств исходные
значения свойств объектов (табл. 2.1).

Таблица 2.1 Задание
свойств объектов

Имя

объекта

Имя

свойства

Значение свойства

Описание свойства

UserForm 1 (Форма)

Caption

Первая
форма

заголовок
формы

StartUpPosition

2-CenterScreen

начальное
положение
формы при запуске

UserForm 1 (Форма)

Font

Times New Roman

название
шрифта

Полужирный

начертание

11

размер
шрифта

Label 1 (Надпись)

Caption

Hello, World!!!

текст
надписи

Command Button 1 (Кнопка)

Caption

изменить надпись

текст на
кнопке

 

Рис. 2.2. Вид пользовательской
формы после изменения
свойств
Теперь форма
выглядит иначе (рис. 2.2).

2.  Выполните
запуск приложения
VBA (кнопка «Запуск подпрограм­мы / UserForm«, либо
клавиша
F5). После
просмотра формы завершите
работу приложения   с помощью кнопки «Закрыть» в
правом верх­нем углу формы.

3.  Напишите код процедуры для обработки события Click элемен­та
«Кнопка». Для этого:

а) выберите  
на  форме  эле­
мент
«Кнопка»;

б)  перейдите в режим ввода программного    кода    (команда «Вид / Программа», либо клави­ша F7). VBA автоматически ге­нерирует шаблон для
ввода кода
процедуры:

Private Sub CommandButtonl_Click()

End Sub

в) наберите код процедуры между операторами Private Subи End Sub следующим
образом:

Private Sub CommandButtonl_Click()

‘ Установить новое значение свойства Caption

элемента «Надпись» (с именем Label 1)

Label1.Caption = «Здравствуй, мир !!!»

  End Sub

4.        
Выполните запуск приложения.

5.        
 

Рис. 2.3. Вид второй 
пользовательской формы

Нажмите левую
кнопку мыши на элементе «Кнопка». Обратите
внимание,
как при этом изменился текст надписи.

6.         
Добавьте к проекту вторую форму. Ее свойство Name автоматиче­ски
устанавливается в значение
UserForm2.

7.         
Разместите на ней два элемента «Надпись», два элемента  
«Поле»   и   два
элемента «Кнопка». Эле­менты
управления «Поле»
служат для ввода в программу следующих дан­ных о Вас:   фамилия и  возраст.
Измените  свой­ства     объектов, чтобы форма имела вид, представленный на рис. 2.3.

8.         
Напишите для собы­тия Click первого эле­мента «Кнопка» (с  име­нем      CommandButtonl) код
процедуры:

Private Sub CommandButtonl_CHck()

Dim strVarl As String, strVar2 As String

strVarl = «»: strVar2 = «»

Занести в переменную strVarl текст из первого поля

strVarl =TextBoxl.Text

Занести в
переменную
strVar2 текст из
второго поля

strVar2 = TextBox2.Text

Функция MsgBox служит для вывода сообщений из программы

MsgBox «Ваша фамилия» & strVarl & «. Вам
сейчас » &
strVar2

End Sub

9.  Напишите для события Click второго элемента «Кнопка» (с
име­
нем CommandButton2) код процедуры:

Private Sub CommandButton2_Click()

End

End Sub

10.  
Выполните запуск приложения (при этом форма UserForm2 долж­на быть
активной).

11.   
Введите в первом окне «Поле» (с именем TextBoxl) Вашу фами­лию, во
втором окне «Поле» (с именем
TextBox2) Ваш возраст.

12.   
Нажмите левую кнопку мыши на элементе «Кнопка» (с именем CommandButtonl). Проверьте текст полученного сообщения.

13.   
Завершите работу приложения с помощью кнопки CommandButton2.

 
Самостоятельно

Используя VBA в MS Excel, разработать пользовательскую
форму «Вычис
ление функций», предназначенную для вычисления выражений
при заданных
целых
числах x, y, z в соответствии с вариантом задания (№ п/п). Для проверки
значений
функций подобрать контрольный пример. Форма должна содержать:

1.                  Заголовок формы и надписи для
обозначения функций, например «f =».

2.                  Кнопку «Вычислить», при нажатии на
которую считываются значения ар
гументов  функции, вычисляются выражения,
значения которых выводятся в диалоговые окна
сообщений MsgBox и в
соответствующие для них надписи на форме после знака «=», например «f = 24».

3.                  Кнопку «Очистить», при нажатии на
которую удаляются значения функций.

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

Контрольные вопросы:

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

2.        
Какие встроенные объекты VBA использовались в данной лабора­торной
работе?

3.        
Каково  назначение  форм пользователя, элементов управления «Надпись»,
«Поле», «Кнопка»?

4.        
Что такое «свойство объекта»? Какое окно в среде программирова­ния VBA
предназначено для отображения свойств выбранного объекта?

5.         
Какие
свойства  и для каких объектов вы использовали в лабора­торной работе?

6.        
Приведите
примеры обращения в программе к свойствам элемен­тов «Надпись», «Поле».

7.    Понятие
события. Какое событие генерируется в системе, если во
время выполнения
проекта перевести указатель мыши на элемент
«Кнопка» и
нажать левую кнопку мыши?

Практическая работа №3

Условные операторы

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

Для этого используется оператор if ..then:

If условие then

            Команды1

Else

            Команды2

End If

Если условие истинно, то выполняются команды1, если ложно,
то команды2.

·   когда нужно проверить на соответствие нескольким условиям
(обратите внимание на использование логических операторов
AND и OR):

AND – условия
выполняются одновременно

OR
необходимо выполнение хотя бы одного из условий

y=5 при аÎ(5;10)

If (a< 10) And (a>5) Then

MsgBox («y=5»)

End If

Задание 1

 Расчет квадратного уравнения вида , где коэффициенты a, b и с задаются
пользователем.

1.Откройте новый документ Excel и сохраните его под именем «Практическая
работа_4_1».

2.Откройте новый модуль VBA с помощью команды Вид-> Макросы. Введите
имя нового макроса
Lab4 и нажмите
кнопку  «Создать», находящуюся на панели справа.

3.В открывшемся окне редактора набрать следующий код между Sub Lab4 и End Sub:

Dim s as String

Dim a, b, c, d, x1, x2, x as double

S=InputBox(«Введите значение коэффициента а»)

A = val(s)

S=InputBox(«Введите значение коэффициента b»)

b = val(s)

S=InputBox(«Введите значение коэффициента c»)

c = val(s)

d=b*b-4*a*c

if D>0 then

x1=(-b+sqr(d))/(2*a)

x2=(-b-sqr(d))/(2*a)

  MsgBox («X1=» & str(x1) & « X2=» & str(x2))

Else then

if D=0

x=-b/(2*a)

MsgBox(«x=» & str(x))

else

MsgBox(«Корней нет»)

endif

endif

Самостоятельно!!!

1.     
Написать процедуру, рассчитывающую значение функции         .

2.      Написать
программу, которая находит сумму двух данных чисел (если оба числа четные) или
произведение (если хотя бы одно из чисел — нечетное). Во всех остальных случая
вывести сообщение: «числа нечетные».

3.      Найти
минимальное из двух чисел, вводимых с клавиатуры

 

Задание 
2.

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

Рис. 2. Листинг второго варианта написания If..Then с
измененным условием

 

 

 

Задание  3

2Разработать
пользовательскую форму и составить программу, вычисляющую значение функции:

Пользовательская форма имеет вид, представленный на рис. 3.

Объект	Свойство	Объект	Свойство
UserForm1	Caption = Вычисление значения функции	Label1	Caption = Значение X AutoSize = True
CommandButton1	Name = calc
Caption = Вычислить	Label2	Caption = Значение Y AutoSize = True
CommandButton2	Name = clean Caption = Очистить	TextBox1	Name = txtX Locked = False
CommandButton3	Name = exitForm Caption = Выход	TextBox2	Name = txtY Locked = True

Свойства объектов формы
представлены ниже.

Для обработки события нажатия
кнопки  «Вычислить»  введем  следующий код:

Private Sub calc_Click()

Dim x, y As
Single x = Val(txtX.Text)

If x <= -4 Then

y = (Sin(3 * x) + x ^ 2) / (1 + x ^ 2) ^ (1 / 3)

ElseIf x > 3
Then

y = Abs(x — Exp(-x))

Else

y = Sqr(x ^ 2 +
4)

End If txtY.Text = y

End Sub

Подберем контрольные примеры: при x = –4 y = 6,431257;

                                                          
при
x = 0  y = 2;

                                                            при
x =
10
y = 9,999955.

 Проверим работу программы (рис. 4).

Рис. 4. Результаты вычисления значений функции

 

 

Самостоятельно!!!!

Используя редактор VB MS Excel, разработать
пользовательскую форму и составить программу, вычисляющую значение функции в
соответствии с вари- антом задания (№ п/п). Подобрать контрольный пример.

Функция

(аргумент)

Действие

Abs(N)

Возвращает
абсолютное значение аргумента N

Atn(N)

Возвращает
арктангенс N (радиан)

Cos(N)

Возвращает
косинус N (радиан)

Exp(N)

Возвращает
константу е (натуральный логарифм = 2.718282…), возведенную в степень N

Fix(N)

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

Int(N)

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

Log(N)

Возвращает
натуральный логарифм N

Rnd(N)

Возвращает
случайное число: аргумент является необязательным. Используется только после
инициализации генератора случайных чисел (оператор Randomize)

Sgn(N)

Возвращает
знак числа: -1, если N — отрицательное; 1, если N — положительное; 0, если N
равно 0

Sin(N)

Возвращает
синус N (радиан)

Sqr(N)

Возвращает
корень квадратный из N. Если N является отрицательным числом — возвращается
ошибка времени исполнения

Tan(N)

Возвращает
тангенс N (радиан)

Контрольные
вопросы и задания:

1.          
Для чего
используется свойство
Caption элемента «Надпись»?

2.         
Каково
назначение функции
Val?

3.   
Назначение
функции
MsgBox.

4.    Назначение функции InputBox.

5.         
Является ли
обязательным элемент
Else в структуре команды If?

6.         
Каким образом
в программе записываются комментарии?

7.         
Какое значение («истина» или «ложь») является
результатом опе
рации сравнения m <= n при m = 3 и n = 4?

8.         
Что означает
команда
k = k
+ 1?

9.         
Как работает команда sum = sum + a?

10.   
Объясните
назначение команд составленного Вами макроса.

ПРАКТИЧЕСКАЯ РАБОТА 4

ОРГАНИЗАЦИЯ МНОГОЗНАЧНЫХ

ВЕТВЛЕНИЙ В ПРОГРАММЕ

Цель: Научиться
осуществлять выбор из нескольких возможных ва­
риантов с помощью команды Select Case, применять элемент «Список» для обработки различных списков данных.

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

Оператор  SelectCaseEnd Select

Организация
множественного выбора в
 Visual Basic

1.    Формат записи:

Select Case переменная

Case значение 1

Действие 1

[[…

Case значение N

Действие N]

[Case Else

Действие]]

End Select

Примеч.: 1)Значение переменной в процедуре должно указываться сверху вниз,
т.е. условия проверяются сначала.

   2) Если в
области
значение находится условие, то необходимо использовать ключевое словосочетание Case Is
условие

Свойства ListBox

Некоторые свойства ListBox можно
установить только в режиме проектирования и их нельзя изменять во время работы
приложения

List

Массив пунктов списка. Элемент массива List(0) содержит
первый пункт списка, элемент List(1) — второй и т.д., вплоть до последнего
элемента — List(ListCount-1).

ListCount

Возвращает число пунктов списка. Доступ к ним можно
получить с помощью значений индексов в диапазоне от 0 до ListCount-1

ListIndex

Представляет собой индекс выбранного пункта списка. При
выборке нескольких пунктов ListIndex представляет индекс
последнего выбранного пункта. Если не выбран ни один элемент, значение ListIndex =
-1. Это свойство можно использовать для выбора или удаления конкретных
пунктов. Так, следующий код удаляет выбранный пункт элемента
List1.RemoveItem List1.ListIndex 
Если при вызове метода RemoveItem ни один пункт списка не выбран, значение
свойства ListIndex отрицательно. Попытки удалить пункт с
отрицательным индексом приводят к ошибке исполнения. После удаления пункта
индексы последующих пунктов соответственно перестраиваются.

Методы ListBox

AddItem

Используется
для добавления пунктов в список.
List1.Additem item, index
Параметр item — строка, добавляемая в список, a index —
ее порядковый номер (необятельный аргумент — если его опустить, строка
добавляется в конец списка). Если значение свойства Sorted равно
True, то пункт вставляется в соответствующее место списка, независимо от
значения аргумента index

RemoveItem

Используется
для удаления пункта из списка. Необходимо знать index удаляемого пункта
List1.Removeltem Index
Параметр index указывает на порядковый номер удаляемого пункта и является
обязательным. Следующий оператор удаляет пункт из начала списка. List1.Removeltem
()

Clear

Удаляет
из списка элемента все пункты.
List1.Clear

Пример
1

Брокер получает процент от суммы сделки. Для сделок, сумма которых менее 150 тыс. р., вознаграждение брокера составит 3,5 %, от 150 до 500 тыс. р. 4,5 %, а для сделок, сумма которых составляет больше 500 тыс. р. – 5
%. Разработать пользовательскую форму и
составить программу для расчета
вознаграждения
брокера.

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

Свойства объектов формы представлены ниже.

Объект

Свойство

Объект

Свойство

UserForm1

Caption = Вознаграждение брокера

Label1

Caption = Сумма сделки

AutoSize = True

CommandButton1

Name = calc

Caption = Рассчитать

Label2

Caption = Вознаграждение

AutoSize = True

CommandButton2

Name = clean Caption = Очистить

TextBox1

Name
= txtSumma Locked = True

CommandButton3

Name = exitForm Caption = Выход

TextBox2

Name = txtVzngr Locked = True

Для обработки события нажатия кнопки «Рассчитать» введем   следующий
код:

Private Sub calc_Click()

Dim S, P As Single

S = Val(InputBox(«Введите
сумму сделки», «Ввод данных»))

Select Case S

        Case 0 To 149999

        P = S * 0.035

        Case Is >= 500000

        P = S * 0.05

     Case Else

     P = S * 0.045

     End Select

     txtSumma.Text = Str(S) + » руб.»      txtVzngr.Text = Str(P) + » руб

End Sub

В данном случае слово Is, используемое в коде программы,
является ключевым словом VBA, обозначающим
тестируемое выражение в операторе Case

Пример
2

Составьте
макрос, который запрашивает по отдельности день,
месяц и год, затем из
введенных значений формирует текстовую
строку (например, «Сегодня 1 Мая
2002 года») и выводит ее на экран. Для этого:

а)  в среде Excel VBA добавьте к проекту форму;

б)  разместите на форме:

—  4 элемента «Надпись»
(один из них, пред­
назначенный для  вывода результата,  должен  иметь  имя  Result),

— 2 элемента «Поле»
(
TextBox1 — для ввода
дня,
TextBox2 — для ввода
года),

— 1 элемент «Список»
(для выбора месяца из списка; его имя по умолчанию
ListBoxl измените на Listl)

— 2 элемента «Кнопка«;

в)  свойство BorderStyle элемента «Надпись» с
именем
Result ус­тановите в
значение 1; измените значения других свойств объектов
так, чтобы форма
имела вид, представленный на рис.2;

       г)    в окне редактирования модуля напишите код процедуры для обработки
события
Activate формы (событие Activate происходит, когда форма становится активной). Данная процедура заполняет спи­сок List1(метод AddItem добавляет строку в
список):

Private Sub UserForm_Activate()

Listl.AddItem «Январь«

Listl.AddItem «Февраль«

Listl.AddItem «Март«

Listl.AddItem «Апрель«

Listl.AddItem
«
Май«

Listl.AddItem «Июнь«

Listl.AddItem «Июль«

Listl.AddItem «Август«

Listl.AddItem «Сентябрь«

Listl.AddItem «Октябрь«

Listl.AddItem «Ноябрь«

Listl.AddItem «Декабрь» End Sub

д)  напишите код процедуры для обработки события Click элемен­та «Кнопка»
с именем
CommandButton1:

Private Sub CommandButtonl_Click()

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

indexпорядковый номер
выбранной в списке строки

mes — наименование месяца

Dim index As Integer, mes As String

If TextBox1 = «» Then  _

MsgBox «Вы забыли указать день«: Exit Sub

If Val (TextBoxl) < 1 Or Val (TextBoxl)
> 31 Then _

MsgBox
«Неверен день месяца»:
Exit Sub

‘ Свойство Listlndex элемента «Список» содержит

порядковый номер выбранной в списке строки.

‘ Строки в списке нумеруются,
начиная с 0. Если не выбрана ни

одна строка, свойство Listlndex имеет значение -1

index = List1.ListIndex

If index = -1 Then _

MsgBox «Вы
забыли выбрать месяц»:
Exit Sub

If TextBox2 = «» Then _

MsgBox «Вы забыли
указать год»:
Exit Sub

Result.Caption = «»

Select Case index

Case 0: mes = «января«

Case 1: mes = «февраля«

Case 2: mes = «марта«

Case 3: mes = «апреля«

Case 4: mes = «мая«

Case 5: mes = «июня«

Case 6: mes = «июля«

Case 7: mes = «августа«

Case 8: mes = «сентября«

Case 9: mes = «октября«

Case 10: mes = «ноября«

Case 11: mes = «декабря»

End Select

Result = «Сегодня » & TextBoxl & » » & mes & » »
& _

TextBox2 & » года»

End Sub

e) напишите код процедуры для обработки события Click элемен­та «Кнопка» с именем CommandButton2:

Private Sub CommandButton2_Click()

End

End
Sub

2.         
Выполните запуск приложения (при этом форма UserForml должна быть
активной).

3.         
В макросе предусмотрена обработка следующих ситуаций: не введен день или
год;  введен несуществующий номер дня; не выбран ни
один месяц в списке.

4.          
Повторите пп. 3 и 4 для нескольких различных исходных данных.

Пример 3

По введенной дате рождения
сообщить пользователю, кто он по знаку зодиака (с 21 марта по 20 апреля – Овен,
с 21 апреля по 20 мая – Телец, с 21 мая по 21 июня – Близнецы, с 22 июня по 22
июля – Рак, с 23 июля по 23 августа – Лев, с 24 августа по 22 сентября – Дева,
с 23 сентября по 23 октября – Весы, с 24 октября по 22 ноября – Скорпион, с 23
ноября по 21 декабря – Стрелец, с 22 декабря по 20 января – Козерог, с 21
января по 19 февраля – Водолей, с 20 фев раля по 20 марта – Рыбы).

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

Свойства объектов формы представлены ниже.

Объект

Свойство

Объект

Свойство

UserForm1

Caption = Знак зодиака

Label1

Caption = Дата рождения

AutoSize = True

CommandButton1

Name = calc

Caption = Определить знак

Label2

Caption = Знак зодиака

AutoSize = True

CommandButton2

Name = clean Caption = Очистить

TextBox1

Name
= txtData Locked = False

CommandButton3

Name = exitForm Caption = Выход

TextBox2

Name = txtZodiak Locked = True

Чтобы определить знак зодиака по введенной
пользователем дате рождения, воспользуемся оператором выбора
Select Case.
Кроме этого для выделения из даты месяца и числа потребуются функции
Month(Дата)
и
Day(Дата), которые возвращают соответственно месяц как целое 
число от 1 до 12 и день как целое число от 1 до 31. Таким  образом,  код  обработки  события нажатия кнопки
«Определить знак» будет иметь вид:

Private Sub calc_Click()

Dim DR As Date

DR = (txtData.Text)

Select Case Month(DR) ‘выбор знака зодиака по номеру месяца

Case 1

If Day(DR) <= 20 Then txtZodiak.Text = «Козерог« Else txtZodiak.Text = «Водолей» Case 2

If Day(DR) <= 19 Then txtZodiak.Text = «Водолей« Else txtZodiak.Text = «Рыбы» Case 3

If Day(DR) <= 20 Then txtZodiak.Text = «Рыбы« Else txtZodiak.Text = «Овен» Case 4

If Day(DR) <= 20 Then txtZodiak.Text = «Овен« Else txtZodiak.Text = «Телец» Case 5

If Day(DR) <= 20 Then txtZodiak.Text = «Телец« Else txtZodiak.Text = «Близнецы» Case 6

If Day(DR) <= 21 Then txtZodiak.Text = «Близнецы« Else txtZodiak.Text = «Рак» Case 7

If Day(DR) <= 22 Then txtZodiak.Text = «Рак« Else txtZodiak.Text = «Лев» Case 8

If Day(DR) <= 23 Then txtZodiak.Text = «Лев« Else txtZodiak.Text = «Дева» Case 9

If Day(DR) <= 22 Then txtZodiak.Text = «Дева« Else txtZodiak.Text = «Весы» Case 10

If Day(DR) <= 23 Then txtZodiak.Text = «Весы« Else txtZodiak.Text = «Скорпион» Case 11

If Day(DR) <= 22 Then txtZodiak.Text = «Скорпион« Else txtZodiak.Text = «Стрелец» Case Else

If Day(DR) <= 21 Then txtZodiak.Text = «Стрелец« Else txtZodiak.Text = «Козерог» End Select

End Sub

Для примера: родившиеся 25 сентября 2000 г. по знаку зодиака «Весы»

Задание 1

1.   
Самостоятельно разработайте приложение для регистрации уча­стников
межвузовской конференции. Приложение запрашивает фа­
милию
участника
, город (выбирается из списка; если нет в списке,
то
можно ввести в
текстовом окне), должность (выбирается из списка: профессор, доцент, старший преподаватель,
преподаватель, асси­
стент, студент
), затем из введенных данных
формирует текстовую строку (например,
«Иванов В.А., доцент, Хабаровск») и заносит ее
в список. В
приложении должна быть предусмотрена возможность удаления строки из списка. Для этого:

а)  добавьте к проекту форму UserForm2;

б)  разместите
на форме 3 элемента «Надпись», 1 элемент «Поле»
(для ввода фамилии), 2 элемента «Список»
(первый — для выбора
должности,
второй — для формирования результата — списка участни
ков), 1 элемент
«Поле со списком» (комбинированное окно для ввода или выбора города из списка) и 2 элемента
«Кнопка» (первый – для
занесения строки в список, второй — для
удаления отмеченной строки из списка);

в)  измените значения свойства Name элементов (табл.1);

Новые
имена объектов
                                                                                         
Таблица.1

Имя объекта

Значение свойства Name

TextBoxl (Поле)

Textl

ListBoxl (Список)

Listl

ComboBoxl (Поле со списком)

Combo 1

ListBox2 (Список)

Result

г)  измените значения других свойств элементов так, чтобы форма имела вид,
представленный на рис. 3;

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

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

Задание 2

В соответствии с вариантом задания (№
п/п) разработать пользователь скую форму и составить программу в редакторе
VB MS Excel. Подобрать контрольный пример

№ п/п

Задание

1

Торговый агент получает
вознаграждение
в размере некоторой
доли от суммы совер шенной сделки: если объем сделки
до 6000 р., то в размере
5 %; если объем до 15 000 р.
– 7 %; если выше – 10 %. Определить размер вознаграждения торгового агента.

2

На банковский
вклад
начисляются проценты в сумме 15 % годовых, если сумма вклада
превышает
100 000 р., 10 % годовых
на суммы до 50 000 р., 12 % годовых
на остальные суммы.
Рассчитать сумму полученных
вкладчиком процентов
по истечении срока.

3

Менеджер получает комиссионные в зависимости
от объема продаж за месяц: если
объем продаж менее 100 000 р., то ставка комиссионных
составляет
8 %, если от
100 000 до 200
000
р. 10,5 %,
более 200 000 р.
14 %. Определить сумму комиссионных менеджера.

4

Рассчитать заработную плату сотруднику с
учётом подоходного налога. Подоходный налог высчитывается по следующей схеме:
если начисленная зарплата составляет ме- нее 4200 р., то налог не взимается,
если от 4200 р. до 100 тыс. р., то он составляет      13 % от начисленной
суммы, а если начисленная зарплата составляет более 100 тыс.  р., то к 13 %
от разницы начисленной суммы и 100 тыс. р. прибавляется еще 18200 р.

5

Сотрудник фирмы получает премию по итогам
работы за месяц по следующей схеме: если заключено сделок менее чем на 50 000
р., то премия составляет 5 % от общей стоимости сделок, если не меньше чем на
50 000 р. но менее чем на 150 000 р. – 7,5 %, если же не менее 150 000 р. –
11,3 %.
Определить размер премии
сотрудника.

6

Рассчитываясь в одном из
магазинов, покупатель получает скидку:
если количество по- купаемого им товара не менее 100, то
скидка составляет 10 %, если от 50 до 100, то 5 %, в остальных случаях скидка не предоставляется. Определить, какую сумму
надо запла тить покупателю, если он покупает товар в количестве
N штук
по цене
S руб.
каждая.

7

Определить стоимость билета на поезд в
зависимости от расстояния до пункта назначения и стоимости
S р. билета до конечной станции: если
расстояние не превышает 500 км, то стоимость
S уменьшается на 50 %, если от 500 до 1000 км,
то на 25 %, а если больше 1000 км, то стоимость
S остается неизменной.

Задание 3

В соответствии с вариантом
задания (№ п/п) разработать пользовательскую форму и составить программу в
редакторе
VB MS Excel, используя опера тор выбора Select Case.

№ п/п

Задание

1

В восточных календарях принят 60-летний
цикл, состоящий, в свою очередь, из пяти 12- летних подциклов. Подциклы
обозначались цветом: 0 – зеленый; 1 – красный; 2 – жел тый; 3 – белый; 4 –
черный. Внутри каждого подцикла годы носили названия животных: 0 – свинья
(или кабан); 1 – крыса; 2 – бык; 3 – тигр; 4 – кролик (заяц или кот); 5 –
дракон; 6 – змея; 7 – лошадь; 8 – овца (баран или коза); 9 – обезьяна; 10 –
петух; 11 – собака. Не- обходимо, чтобы по введенной пользователем дате
рождения печаталось название года рождения по восточному календарю. Для
расчета воспользоваться функцией
Year(Дата), которая возвращает год как целое
число от 100 до 9999 и формулами: [НомерЦвета = ((9910 – Год)
mod
60) 12], [НомерЖивотного = (Год – 3)
mod 12].

Для проверки 1966  г. – «год желтой лошади», 1984 г. – «год зеленой крысы».

3

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

4

Дано целое число n (1<= n <= 99), определяющее возраст человека (в
годах). Для этого числа напечатать фразу «мне
n лет», учитывая при этом, что при некоторых
значениях
n слово
«лет» надо заменить на «год» или «года».

5

По введенному числу n (1<= n<=7) сообщить пользователю место летнего
отдыха из семи предлагаемых туристическим агентством курортов, причем в двух
случаях в качестве места отдыха выдается «отдых на даче».

6

По введенному пользователем времени (часы :
минуты) напечатать приветствие в зависимости от времени суток: «Доброй ночи»
с 0 до 6 часов, «Доброе утро» с 6 до 12  часов, «Добрый день» с 12 до 18
часов, «Добрый вечер» с 18 до 24 часов (в
VBA и Excel время дня выражается дробным числом от 0 до
1, например, полдень представлен как 0,5, соответственно 18 часов как 0,75).

7

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

8

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

Контрольные вопросы
и задания:

1.          
Каково назначение оператора «&»?

2.         
Как изменяется внешний вид элемента «Надпись» при установке
его
свойства
BorderStyle в значение 1
?

3.         
Какое действие выполняет метод AddItem элемента
«Список»?

4.         
Каково
назначение свойства
Listlndex элемента «Список»?

5.         
Какой метод
элемента «Список» используется для удаления стро­ки из списка?

6.         
Чем отличаются
функции элементов управления «Список» и «По­ле со списком»?

7.   
Объясните назначение команд составленных Вами макросов.

ПРАКТИЧЕСКАЯ
РАБОТА №
5

ЦИКЛИЧЕСКИЕ ОПЕРАТОРЫ

Цель: Изучить основные принципы составления циклических про­грамм в Excel VBA. Научиться
обращаться к ячейкам выделенного
диапазона.

ОСНОВНЫЕ СВЕДЕНИЯ

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

·               
оператор цикла с
параметром
For – Next, конструкция которого используется, если
заранее известно, сколько раз должно повториться тело цикла:

For счетчик = начальное_значение
То
конечное_значение Step шаг блок_операторов

Next счетчик

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

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

Задание 1

1.
Составьте макрос, заполняющий выделенную строку ячеек после­
довательностью
чисел 1,2, …
N, где N — количество ячеек. Например, на рис. 1
представлен результат выполнения макроса в случае, если
выделен диапазон
ячеек В2:Е2.

А

В

С

D

Е

F

1

2

1

2

3

4

3

Рис.1. Заполнение программным путем диапазона В2:Е2

Для этого:

а)   перейдите из Excel в среду программирования VBA;

б)  добавьте модуль и в окне редактирования модуля наберите следующие команды:

Public Sub Заполнение_строки()

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

Nколичество
ячеек в строке,

i — номер
текущей колонки,

kчисло,
записываемое в ячейку

Dim N As Integer, i
As Integer, k As Integer

N =
Selection.Columns.Count

k=l

For i =
1 To N

Selection.Cells(1,i)
= k

k = k+l

Next i

End Sub

2.  Вернитесь
в
Excel, выберите
диапазон ячеек
A2:D2 и выполните
макрос.

Дополните макрос
возможностью закраски заполняемых ячеек
зеленым цветом. Для этого после
команды »
Selection.Cells(1, i) = k

вставьте команду
»
Selection.Cells(1, i).Interior.Color = vbGreen«

3.         
Вернитесь в Excel и проверьте работу макроса, выбрав ячейки
В1:С1.

Самостоятельно!!!

Самостоятельно
составьте макрос «Заполнение_колонки», кото
рый будет заполнять
ячейки выделенной колонки последовательны­
ми числами от 1 до М,
где М — количество ячеек. Так, на рис. 2
представлен
результат выполнения макроса в случае, если выделен
диапазон ячеек В2:В5.

А

В

С

1

2

1

3

2

4

3

5

4

6

Рис. 2.
Заполнение программным путем диапазона В2:В5

При разработке
макроса учтите, что:

      
Количество
ячеек в столбце определяется количеством строк выбранного диапазона,
поэтому вместо .
Columns.Count используйте .Rows.Count.

       В объекте  Cells(i, j) i определяет № строки, a j№ колонки. Поскольку макрос должен
работать только с одной колонкой, в цикле нужно обращаться к объекту
Cells(i, 1).

6. Запишите составленный макрос в модуль,
выделите в таблице диапазон ячеек ВЗ:В5 и выполните макрос. Каким образом
теперь выглядит таблица? Текст макроса приведите в отчете по лаборатор­ной работе.

Задание 2

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

  1. В открывшемся окне редактора набираем код:

Sub Lab5

s=InputBox(«Введите
число»)

n=val(s)

f=1

for i=1 to n

f=f*i

next i

MsgBox(«Факториал введенного числа равен » & f)

End Sub

  1. В этом коде до начала цикла со счетчиком в переменную f
    записывается 1. Далее в теле цикла со счетчиком в переменной
    f
    накапливается произведение чисел от 1 до введенного пользователем числа.
    Так на первом шаге цикла в
    f записывается 1*1, на втором шаге цикла
    1*2, на третьем – берем то, что было в
    f на втором шаге 1*2 и * на значение
    счетчика 3, получается 1*2*3 и так далее.

Самостоятельно!!!

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

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

3.   
 
Рисунок 3
Написать программу, находящую сумму всех четных чисел, меньших
заданного числа
N. Сначала задается общее количество чисел и число N.

Задание 3

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

Для создания данной пользовательской
формы перейдем в редактор  и добавим  форму (рис. 3).

Свойства объектов формы представлены в таблице 2.

Для обработки событий нажатия кнопок «Рассчитать», Очистить» и «Выход»
введем следующий код:

На рабочем листе «Пример 3» разместим
 кнопку «Открыть форму» для вызова формы «Пример 3» и запустим данную форму .

Самостоятельно!!!

В   соответствии с вариантом задания
разработать пользовательскую форму и составить программу в редакторе VB MS
Excel. Подобрать контрольный пример.

1.
 

Найти все
натуральные числа n, меньшие 30, для которых (2
n
n) кратно 7.

2.  

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

3.  

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

4.  

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

5.  

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

6.  

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

7.  

Найти сумму целых положительных чисел, больших 20,
меньших 100, кратных 3 и заканчивающихся на 2, 4 или 8.

8.
 

Найти среднее
арифметическое четных чисел из N чисел, вводимых с клавиатуры
.

9.
 

Найти максимальное
из 10-ти чисел, вводимых с клавиатуры.

10.         
 

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

Контрольные вопросы и
задания:

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

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

3.        
Что
означает запись «
Selection.Cells(3, 1)»?

4.        
Сколько
раз выполнится команда «
Selection.Cells(l, i) = k» внутри цикла «For i = 1 То NNext
i«? Какие действия она выполняет?

5.        
Что
означает команда
k = k + 1?

6.    Дайте определение циклическому алгоритму? Что
такое цикл?

7.   
Для чего
предназначен оператор For…Next?

ПРАКТИЧЕСКАЯ РАБОТА №6

СОЗДАНИЕ
ПОЛЬЗОВАТЕЛЬСКИХ ФУНКЦИЙ MS EXCEL

          Основные
сведения

Одной
из возможностей
VBA является создание новой
функции
MS Excel, которую впоследствии можно использовать аналогично встроенным функциям
(СУММ, МАКС, ЕСЛИ и др.). Это целесообразно в тех случаях, если необходимой
функции нет в стандартном наборе встроенных функций
MS Excel, на- пример формулы
Пифагора, а ей приходится часто пользоваться.

Пример
1

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

1.          
Откроем MS Excel и перейдем в редактор VB.

2.          
В новом модуле (Insert ® Module) через команду Insert ® Procedure зададим имя и остальные
параметры новой функции (рис. 12). Нажмем кнопку «ОК».

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

 Рис.12. Диалоговое окно
	Add Procedure

Public    Function    Пифагор(a    As   Single,    b  As
Single)

‘аргументы а и b вещественные

Пифагор = Sqr(a ^ 2 + b ^ 2)

End Function

4.          
Закроем редактор VB и воспользуемся нашей функцией.

5.          
В ячейки А1, В1 и С1 введем соответственно символы
а, b, и с; в ячейки А2 и В2 – значения
катетов (3 и 4), а в ячейку С2 вставим формулу, воспользовавшись кнопкой
«fBxB»  на  панели  инструментов  либо  командой  Вставка
 
®  Функция  и  выбрав созданную функцию в категории
«Определенные пользователем» диалогового окна Мастер функций.

Пример 2

Создадим функцию пользователя, математически определенную как y = sin(px)e2 xи построим ее график. Для этого в редакторе VB MS Excel в новом модуле
через команду
Insert ® Procedure
создадим функцию с именем «Y» и
напишем для нее программный код:

Public Function Y(x As Single)

Y = Sin(Application.Pi() * x)
* Exp(-2 * x) End Function

Здесь мы воспользовались стандартной функцией Pi(),
которая возвращает значение постоянной
pExcel
функция пи()). Так как она не является внутренней функцией
VBA, то
ее необходимо записать в виде
Application.Pi().

Теперь
проверим работу созданной функции и построим ее график:

Пример
3

Создать макрос Вышивка линейного
алгоритма в приложении MS Excel с помощью Visual
Basic for Application.

1.1.             
Вызовите окно программы Visual Basic

1.2.             
Добавьте новый объект в проект. Insert (Вставка)
выберите Module (модуль).

1.3.             
Наберите первую строку тела процедуры, начиная
с указания объекта
Range(“A1”), т.е. ячейка с адресом А1.

     Range(«A1»).Interior.ColorIndex = Rnd()
* 8

Rnd(), -. генерация
произвольного числа от 0 до 1.

1.4.             
Но это число слишком мало, для его увеличения
умножьте функцию на 8.

1.5.             
Скопируйте  содержимое еще семь раз и смените
адреса ячейки, опираясь на текст программы

1.6.             
Продолжите работу самостоятельно, учитывая, что
первый блок меняет случайным образом цвет номерами 0-8 в ячейках в
диапазоне А1:
D2

1.7.             
Во втором блоке с помощью метода (т.е.
стандартной команды действия) с названием .
Copy
происходит поочередное копирование в буфер обмена 4 клетки в первом ряду. С
помощью метода .
PasteSpecial происходит вставка в
соответствующие адресам клетки

1.8.             
Sub Узор()
Range("A1").Interior.ColorIndex = Rnd() * 8
Range("B1").Interior.ColorIndex = Rnd() * 8
Range("C1").Interior.ColorIndex = Rnd() * 8
Range("D1").Interior.ColorIndex = Rnd() * 8
Range("A2").Interior.ColorIndex = Rnd() * 8
Range("B2").Interior.ColorIndex = Rnd() * 8
Range("C2").Interior.ColorIndex = Rnd() * 8
Range("D2").Interior.ColorIndex = Rnd() * 8

Range("A1").Copy: Range("H1").PasteSpecial
Range("B1").Copy: Range("G1").PasteSpecial
Range("C1").Copy: Range("F1").PasteSpecial
Range("D1").Copy: Range("E1").PasteSpecial

Range("A2").Copy: Range("H2").PasteSpecial
Range("B2").Copy: Range("G2").PasteSpecial
Range("C2").Copy: Range("F2").PasteSpecial
Range("D2").Copy: Range("E2").PasteSpecial

Range("A1:H2").Copy: Range("A3").PasteSpecial
Range("A1:H4").Copy: Range("A5").PasteSpecial
Range("A1:H8").Copy: Range("A9").PasteSpecial
Range("A1").Select

End Sub
Самостоятельно
разберитесь с третьим и четвертым блоками, запоминая, что метод .
Select – это выделение указанного диапазона ячеек.

Пример  4

Усовершенствовать
макрос Узор линейного алгоритма в приложении MS Excel с
помощью Visual
Basic for Application.

1.1.     Переключитесь в окно MS Excel.

1.2.     Вызовите панель Формы (Вид/Панели инструментов/Формы).

1.3.     Выберите инструмент Кнопка, разместите кнопку справа от
орнамента разметом 2х3 см.

1.4.       
Автоматически, после размещения элемента на
экране, панель Формы вызывает окно Назначить макрос объекту.
Выберите из списка, если таковой имеется, макрос Узор. Нажмите ввод.

1.5.     Перейдите в окно Visual Basic (ALT+F11).

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

1.7.     Проверьте работу программы и исправьте ошибки, если таковые имеются.

I.Объекты  MS Excel

1.    Range(«диапазон»), где диапазон
указывается как в табличном процессоре.

Range(«C1»), Range(«A1:H2»),
Range(«A1:H2»)

2.    Cells(номер ряда, номер колонки).

Cells(1, 1) – ячейка А1, Cells(1, 2) — ячейка В1. Range(Cells(1,
1) , Cells(5, 3))
диапазон А1:С5.

3.    RowрядY = ActiveCell.Row

4.    Columnколонка. Х
= ActiveCell.Column

5. Worksheets (имя или номер)– рабочий лист

6. Workbooks (имя) рабочая книга.

Workbooks(«Cogs.xls»).Worksheets(«Sheet1»).Activate

7.        
ActiveCell – объект, означающий активную
ячейку,

8.        
Activate – метод,
активизирующий указанную ячейку.

1.8.     Sub run()
x = ActiveCell.Column
Y = ActiveCell.Row
Cells(Y + 1, x + 1).Interior.ColorIndex = 3
Cells(Y + 1, x + 1).Activate
End Sub
Опишите переменные, которые будут использованы в тексте программы с
целью сделать ее универсальной (применимой во многих сходных задачах, в
данном случае: при любых координатах начальной ячейки).

1.9.     Запишите строку Dim X,Y as
Byte. Здесь  X,Y – переменные, а Byte
тип данных (один из многих). Помощник предложит вам список, где выберите тип
данных.

1.10.   Разместите в окне MS Excel
дополнительную кнопку, которой назначьте макрос
run(). Напишите на кнопке – Диагональ.

1.11.   Активизируйте ячейку А1 и нажмите кнопку Диагональ шесть
раз. Это поможет глубже объяснить текст кода.

1.12.   Активизируйте ячейку В6 и нажмите кнопку Диагональ четыре раза.

1.13.   Выделите произвольную ячейку. Проверьте работу кнопки.

Пример
5

Используя
VBA в MS Excel, разработаем
пользовательскую форму «Расчет прибыли» для расположенной ниже таблицы.

Выручка от реализации (ВР)

Себестои- мость (С)

Внереализацион- ный доход (ВД)

Балансовая прибыль (БП)

Налог на прибыль (НП)

Сумма на- лога (СН)

Размер при- были (РП)

900,00
р.

400,00 р.

150,00
р.

(ВР
+ ВД – С)

20,0
%

(БП × НП)

(БП
– СН)

Для создания пользовательской
формы откроем новую рабочую книгу
MS Excel и на «Листе1» в первой строке введем
наименование полей таблицы, а строкой ниже установим в ячейке, соответствующей
графе НП, процентный формат, а в остальных шести – денежный. Расчертим таблицу
(рис. 18).

Перейдем к разработке
пользовательской формы, для чего откроем редактор
VB:

1.             
Добавим форму, воспользовавшись командой Insert ® UserForm.

2.             
Разместим на форме с помощью панели элементов Toolbox
слева семь надписей (элемент Label), справа – семь полей (элемент TextBox),
а ниже — четыре командных кнопки (элемент CommandButton).

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

Объект

Свойство

Объект

Свойство

UserForm1

Caption = Расчет прибыли

TextBox6

Name = txtSN

Locked = True

CommandButton1

Name
= calc

Caption
= Расчет

TextBox7

Name = txtRP

Locked = True

CommandButton2

Name = printToTable

Caption = Заполнить таблицу

Label1

Caption = Выручка от реализации

AutoSize = True

CommandButton3

Name
= clean

 Caption
= Очистить

Label2

Caption = Себестоимость

AutoSize = True

CommandButton4

Name
= exitForm Caption = Выход

Label3

Caption
= Внереализационный доход

AutoSize = True

TextBox1

Name
= txtVR Locked = False

Label4

Caption
= Налог на прибыль, %

AutoSize
= True

TextBox2

Name
= txtS

Locked
= False

Label5

Caption = Балансовая прибыль

AutoSize = True

TextBox3

Name
= txtVD Locked = False

Label6

Caption = Сумма налога

AutoSize = True

TextBox4

Name
= txtNP Locked = False

Label7

Caption = Размер прибыли

AutoSize = True

TextBox5

Name
= txtBP Locked = True

Перейдем
к обработке события, возникающего при нажатии на кнопку (со- бытие называется
Click). Для этого выполним двойной щелчок
мышью по командной кнопке «Расчет». Откроется окно редактора кода
VB, в котором вве дем программный код:

Dim VR, VD, S, NP As Single             ‘задание
типа переменных

Dim BP, SN, RP As Single Private Sub calc_Click()

VR = Val(txtVR.Text)       ‘считывание значения
выручки от реализации

S = Val(txtS.Text)         ‘считывание
значения себестоимости

VD = Val(txtVD.Text)       ‘считывание значения
внереализационного дохода

NP = Val(txtNP.Text) / 100 ‘считывание
значения налога на прибыль и перевод
его в доли

BP = VR + VD S           ‘вычисление балансовой прибыли

SN = BP * NP               ‘вычисление суммы налога

RP = BP SN               ‘вычисление размера прибыли

txtBP.Text = BP            ‘вывод
балансовой прибыли в текстовое поле

txtSN.Text = SN            ‘вывод
суммы налога в текстовое поле

txtRP.Text = RP            ‘вывод
размера прибыли в текстовое поле

‘изменение
цвета фона
кнопки для
визуализации того,
что процесс
вычислений выполнен

calc.BackColor = Rnd * 10 ^ 5
End Sub

Аналогично введем программный код для оставшихся кнопок:

Private Sub printToTable_Click()

Cells(2, 1)
= VR ‘вывод значения выручки
от реализации в ячейку А2

Cells(2, 2)
= S ‘вывод значения
себестоимости в ячейку В2

Cells(2, 3)
= VD ‘вывод значения
внереализационного
дохода в ячейку С2

Cells(2, 4)
= BP ‘вывод значения
балансовой прибыли в ячейку D2

Cells(2, 5) = NP ‘вывод значения налога на прибыль в ячейку
E2 Cells(2, 6) = SN ‘вывод значения суммы налога в ячейку F2

Cells(2, 7)
= RP ‘вывод значения размера
прибыли в ячейку G2 printToTable.BackColor = Rnd * 10 ^ 5‘изменение
цветового фона кнопки

End Sub

Private Sub clean_Click()

txtVR.Text = Clear            ‘очистка текстовых полей

txtS.Text = Clear

txtVD.Text = Clear txtNP.Text = Clear txtBP.Text =
Clear txtSN.Text = Clear txtRP.Text = Clear

Cells(2, 1).ClearContents ‘очистка ячеек
A2:G2

Cells(2, 2).ClearContents

Cells(2, 3).ClearContents

Cells(2, 4).ClearContents

Cells(2, 5).ClearContents

Cells(2, 6).ClearContents

Cells(2, 7). ClearContents

End Sub

Private Sub exitForm_Click()

End

End Sub

Теперь
вернемся на «Лист1» и с помощью инструмента Кнопка разместим ниже таблицы
кнопку и назначим макрос ОткрытьФорму. Далее, дважды щелкнув по кнопке,
перейдем в редактор
VB и в модуле «Лист1» введем
программный код:

Private Sub
ОткрытьФорму_Click()

UserForm1.Show    ‘вывод
формы на экран

End Sub

Задания
к лабораторной работе 7

Задание
1

В соответствии с вариантом (№ п/п) создать пользовательскую функцию MS Excel и
воспользоваться ей в формулах, размещаемых на рабочем листе.

Задание 2

Создайте в имеющемся модуле Примера 3
процедуру Цветок(), продолжив ниже новый текст. Код программы
закрашивает стебель цветка в зеленый цвет, а для лепестков генерирует цвета в
пределе 56

Задание 3

Создайте в имеющемся модуле Примера 4
процедуру Обратно(), продолжив ниже новый текст. Код программы рисует
диагональ как в процедуре
run(), но в обратном направлении, т.е. í и
другим цветом.

Задание 4

Используя
VBA в MS Excel, разработать пользовательскую форму по Примеру 5,
предна
значенную  для 
выполнения  расчетов,  соответствующих  варианту  задания (№ п/п). Форма должна содержать:

ПРАКТИЧЕСКАЯ 
РАБОТА №7

Цель работы: изучить основные приемы работы с
встроенными диалоговыми окнами.

Методические указания

ВСТРОЕННЫЕ ДИАЛОГОВЫЕ
ОКНА

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

§  встроенные
диалоговые окна;

§  средства
создания пользовательского интерфейса;

§  средства
создания панели инструментов;

§  средства
работы с графическими объектами;

§  средства
построения диаграмм и графиков;

§  средства
работы с файлами.

Встроенные
диалоговые окна являются простейшей формой организации ввода-вывода и могут
рассматриваться как операторы ввода-вывода языка
VBA. Функция InputBox выводит на
экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим
ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает
значение типа
String,
содержащее текст, введенный в поле. Формат
оператора:

InputBox(prompt[,title][,default][,Xpos][,Ypos][,helpfile,context])

Здесь prompt
строковое выражение, которое будет отображаться как сообщение в диалоговом
окне,
title
сообщение, отображаемое в заголовке окна (если оно опущено, то отображается имя
приложения),
default
сообщение, которое будет выводиться в строке при запуске,
Xpos и Ypos задают
положение окна на экране,
helpfile и context
соответственно имя файла и номер раздела справочной системы.

            Функция
MsgBox выводит на
экран диалоговое окно с сообщением и ожидает нажатия кнопки пользователем
возвращая значение нажатой кнопки как число типа
Integer. Формальная
запись функции выглядит как:

            MsgBox(prompt[,buttons][,title][, helpfile,context]

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

Таблица
1. Константы аргумента
buttons и возвращаемые значения функции MsgBox

Информационные
значки

Значение

Значок
сообщения

VbCritical

16

VbQuestion

32

VbExclamation

48

VbInformation

64

Основная
кнопка

Значение

Номер
основной кнопки

VbDefaultButton1

0

Кнопка
1

VbDefaultButton2

256

Кнопка
2

VbDefaultButton3

512

Кнопка
3

VbDefaultButton4

768

Кнопка
4

Возвращаемое
значение

Значение

Нажатая
кнопка

VbOK

1

Нажато
OK

VbCancel

2

Нажата
Отмена

VbAbort

3

Нажата
Прервать

VbRetry

4

Нажата
повторит

VbIgnore

5

Нажато
Пропустить

VbYes

6

Нажато
Да

VbNo

7

Нажато
Нет

 

Порядок
выполнения работы
.

Пример 1
– Изучите
функцию MsgBox

Sub sample_1()

MsgBox «Фильтровать?»,
vbOKCancel + vbQuestion + vbDefaultButton2,
«Отбор данных»

MsgBox «Отбор
данных произведен»,
vbOKOnly + vblnformation,  «Отбор данных»

MsgBox «Ошибка в
данных!»,
vbOKOnly + vbCritical, «Отбор данных»

MsgBox «Ошибка в
данных!»,
vbCritical + vbAbortRetrylgnore,  «Отбор
данных»

End Sub

Форматирование
значения данных

Для того, чтобы получить
любой формат отображения данных, преобра­зовать числа или даты в строки или
отформатировать строки в соответствии с вашими требованиями, можно использовать
функцию
Format Функция Format использует те же самые символы формата, что и Excel (откройте
окно Фор­мат—Ячейки -Число и в списке «Числовые форматы» укажите «все
форма­ты»).
Обращение к функции:

Format (переменная, «строка формата»)

Для создания
пользовательских форматов данных используются симво­лы, приведенные в табл. 7.

например, отображение
текущей даты может быть записано по-разному:

Символ

Описание

0

Резервирует место для цифры, отображается либо
цифра, либо ноль

#

Резервирует место для числового разряда,
отображается либо цифра, либо ничего

.

Точка разделяет целую и дробную части числа

%

Устанавливает процентное отображение числа,
аргумент при этом умножается на 100

d

День месяца без лидирующего нуля

dd

День месяца с лидируюшим нулем

ddd

Краткое название дня недели

dddd

Полное название дня недели

w

Номер дня недели (воскресенье — 1)

ww

Неделя года в виде целого числа от1 до 54

111

Номер месяца без лидирующего нуля

niiii

Номер месяца с лидир^тощим нулем

mmm

Краткое название месяца

mmmm

Полное название месяца

у

День года

УУ

Гол
в виде двух цифр

УУУУ

Полное
отображение года

/

Разделитель
значений дня, месяца и года в формате даты

q

Номер
квартала

h или hh

Отображает
часы

n или nn

Минуты

s или ss

Сек>»нды

:

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

@

Отображает
символ или пробел

&

Отображает
символ или ничего

> 

Отображает
строку в верхнем регистре

< 

Отображает
строку в нижнем регистре

Пример 2

Sub sample2()

MsgBox «Сегодня » & Format(Date,
«dd.mm.yy»)

MsgBox «Сегодня » & Format(Date,
«dddd, dd mmmm, yyyy»)

End Sub

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

Sub sample3()

р = 123.4506

MsgBox Format(p,
«00000.000»)

MsgBox Format(p,
«###0.00»)

MsgBox Format(p,
«#0.00%»)

End Sub

Использование
MsgBox для обеспечения возможности выбора

Как уже отмечалось
ранее, при помощи необязательного аргумента Buttons можно использовать
VBA-процедуру MsgBox как функцию для получения выбора от пользователя в ответ
на сообщения или вопросы, которые отображает процедура. Для многих простых
вариантов выбора использование функции MsgBox для получения ответа от
пользователя является гораздо более легким, чем получение текстового ввода с
помощью функции InputBox и последующий анализ этого текста для определения
того, какой выбор сделал пользователь. При включении аргумента Buttons с
необходимыми круглыми скобками оператор MsgBox работает подобно функции и
отображает окно сообщения, содержащее различные командные кнопки. MsgBox
возвращает численный результат, указывающий, какую командную кнопку выбрал
пользователь. Число и тип командных кнопок, отображаемых диалоговым окном
MsgBox, выдается с помощью аргумента Buttons.

Пример 3. Создать
макрос,  определяющий нажатие кнопки в окне ввода

РАБОТА С
VBA-ОБЪЕКТАМИ

1. Флажок (CheckBox)

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

Если флажок установлен
– его свойство Value (Значение) устанавливается в True (Истина),
если не установлен – в False (Ложь). Для того чтобы программно
установить или снять флажок, можно воспользоваться его свойством Value,
приравняв ему True или False, соответственно.

Еще одно важное
свойство флажка – TripleState. Если оно включено – флажок помимо True
или False может иметь значение Null, которое можно
интерпретировать как «Пустой флажок». Null-флажок нельзя
модифицировать – он закрашен серым цветом.

Сами по себе, без
использования специальных конструкций языка, флажки приносят мало пользы.
Эффективно работать с ними можно, используя операторы принятия решений.

С флажком можно
сопоставить событие Change (Изменить). Оно выполняется всякий раз при
установке или снятии флажка.

2.Переключатель (OptionButton)

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

Приведем наиболее часто используемые свойства элемента управления OptionButton.

Value

Возвращает True, если переключатель выбран и False 
в противном случае

Enabled

Допустимые значения: True (пользователь может выбрать переключатель)
и
False (в противном случае)

Visible

Допустимые значения: True (переключатель отображается во время
выполнения программы) и
False (в  противном случае)

Caption

Надпись, отображаемая рядом с переключателем

Основными событиями
переключателя являются события
Click  и Change.

Пример 4.

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

ȅ굆。

Рис.: Использование переключателей.

Private Sub CommandButton1_Click()

Dim a As Integer, b As
Integer, c As Integer

a = TextBox1.Value

b = TextBox2.Value

If OptionButton1.Value = True
Then

    c = a + b

End If

If OptionButton2.Value = True
Then

    c = a — b

End If

TextBox3.Value = c

End Sub

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

1. Добавить на форму
объекты:

Объект

Свойство

Значение

Label (надпись)

Name

LabelSeason

Caption

Времена года

Font

Tahoma. 22

Image (рисунок)

Name

Image 1

Visible

False (вначале рисунок невидим)

PictureSizeMode

1

Pic toe

(вставить рисунок зимы)

Height

180

Width

180

Command Button (кнопка)

Name

CmdExit

Caption

Выход

Frame (рамка)

Name

Frame 1

Caption

Выберите время года

Font

Tahoma. 12

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

OptionButton (переключатель)

Name

OptWinter

Caption

Зима

Fore Color

(синий — выбирается в палитре Pelette)

Font

Tahoma. 14. полужирный

OptionButton (переключатель)

Name

Opt Spring

Caption

Весна

Fore Color

(светло-зеленый)

Font

Tahoma. 14. полужирный

OptionButton (переключатель)

Name

OptSummer

Caption

Лето

Fore Color

(темно-зеленый)

Font

Tahoma. 14. полужирный

OptionButton (переключатель)

Name

OptAutumn

Caption

Осень

Fore Color

(оранжевый)

Font

Tahoma. 14. полужирный

2. Запрограммировать щелчок на переключателях:

a) Запрограммировать переключатель Зима (OptWinter),
чтобы в поле рисунка загружался файл, например, winter.jpg (свойство Picture
и функция LoadPicture). Поскольку каталог с приложением может
находиться в разных папках, то к имени файла надо добавить путь к файлу с
приложением

(ActiveWorkbook.Path). После этого надо поле с рисунком сделать
видимым (свойство
Visible).:

Private
Sub OptWinter_Click()

Image1.Picture
= LoadPicture(ActiveWorkbook.Path & «winter.jpg»)

Image1.Visible = True

End Sub

b) Аналогично запрограммировать остальные переключатели.

Option Explicit

Private Sub CmdExit_Click()

End

End Sub

Private Sub OptAutumn_Click()

Image1.Picture = LoadPicture(ActiveWorkbook.Path
& «Autumn.jpg»)

Image1.Visible = True

End Sub

Private Sub OptSpring_Click()

Image1.Picture = LoadPicture(ActiveWorkbook.Path
& «spring.jpg»)

Image1.Visible = True

End Sub

Private Sub OptSummer_Click()

Image1.Picture = LoadPicture(ActiveWorkbook.Path
& «summer.jpg»)

Image1.Visible = True

End Sub

Private Sub OptWinter_Click()

Image1.Picture = LoadPicture(ActiveWorkbook.Path
& «winter.jpg»)

Image1.Visible = True

End Sub

Private Sub CheckBox1_Click()

Call Month

End
Sub

Задания
к лабораторной работе 8

Задание 1. Вывести 5 различных диалоговых окон и 2 окна  с
возможностью выбора

Задание 2. Создать пользовательскую форму и написать
программу для решения следующей задачи с использованием переключателей:

  1. Выбирается число от 1 до 7, определяющее день недели. Дать краткое
    название этого дня.
  2. Выбирается число от 1 до 5. Дать название этого числа.
  3. Вводится нецелое число. Вывести либо его целую часть, либо дробную
    в зависимости от выбора пользователя.
  4. Банк предлагает три вида срочных вкладов: на 3 месяца под 27 %, на
    6 месяцев под 29 % и на год под 30 %. Вкладчик положил
    N
    у. е. на один из срочных вкладов. Какую сумму он получит по истечение
    срока?
  5. Задано расстояние в метрах. Пересчитать это расстояние в
    километрах, милях, футах или ярдах на выбор пользователя ( 1 миля=1,609
    километра, 1 метр=1,094 ярда, 1 метр=3,281 фута).
  6.   Дан объем в литрах. Пересчитать этот объем в пинтах, галлонах,
    бушелях и квартах (английские меры объема жидких и сыпучих тел) на выбор
    пользователя (1 литр=1,706 пинты, 1 литр=0,220 галлона, 1 бушель=36,35
    литра, 1 кварта=1,136 литра).
  7. Дана масса в килограммах. Пересчитать эту массу в пудах, фунтах,
    центнерах или тоннах на выбор пользователя (1 пуд=16,38 кг, 1 фунт=0,409
    кг, 1т=1000 кг, 1 ц=100 кг.).
  8.  Дано расстояние в метрах. Пересчитать его в верстах, саженях,
    аршинах или вершках на выбор пользователя (1 верста=1,067 км, 1
    сажень=2,134 м, 1 аршин=0,7112 м, 1 вершок=4,445 см.).

Контрольные вопросы.

1.    
В чем отличие функций InputBox и
MsgBox?

2.    
Каков смысл аргумента title?

3.    
Каков смысл аргумента default?

4.    
Каков смысл аргумента buttons?

5.    
Каков смысл аргумента prompt?

6.    
Каков смысл аргумента context?

7.    
Каков смысл аргументов helpfile,context?

8.    
Как получить  любой формат
отображения данных
?

9.    
Назначение CheckBox?

10.  
Назначение OptionButton?

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования

«КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ЭНЕРГЕТИЧЕСКИЙ УНИВЕРСИТЕТ»

Н.К. ПЕТРОВА, Л.Р. БЕЛЯЕВА

ПРОГРАММИРОВАНИЕ НА VBA В ПРИМЕРАХ И ЗАДАЧАХ

ЧАСТЬ II. РАБОТА С СИМВОЛЬНЫМИ ДАННЫМИ И МАССИВАМИ

Практикум

Казань 2011

2

УДК 681.3 ББК 32.973 П30

Рецензенты:

кандидат физико-математических наук, доцент Казанского государственного энергетического университета Т.Р.Абдульмянов;

кандидат педогогических наук, доцент Казанского государственного энергетического университета С.М. Куценко

П30 Петрова Н.К., Беляева Л.Р.

Программирование на VBA. Часть II. Работа с символьными переменными и массивами. Практикум / Н.К. Петрова, Л.Р. Беляева. – Казань: Казан. гос. энерг. ун-т, 2011. – 50 с.

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

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

Типовые задачи даются с подробными решениями. Имеется большое количество задач для самостоятельной работы. Наряду с типовыми задачами, практикум содержит большое количество задач повышенной сложности. Задания делятся на 2 типа: 1 – умение «читать» готовые программы, 2 – разрабатывать программы по шаблонному алгоритму и программы с неявным алгоритмом.

Практикум предназначен для студентов всех специальностей КГЭУ, изучающих «Информатику», «Информационные технологии».

УДК 681.3 ББК 32.973

© Казанский государственный энергетический университет, 2011

3

“Года работы над искусственным интеллектом достаточно,

чтобы заставить поверить в Бога.” Перлис Алан

Предисловие

Вучебной литературе имеется не так много пособий по практической работе на языке VBA (Visual Basic for Application), ориентированных на решение математических, инженерных задач. Данный практикум разработан

сцелью восполнить существующий пробел. Он предназначен для обучения – самостоятельно или под руководством преподавателя – основам алгоритмизации с использованием языка VBA в приложении к одному из самых популярных приложений MS Office – MS Excel.

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

Многие задачи на «чтение программ» снабжены ответами.

Втексте практикума приняты такие соглашения:

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

таким стилем.

2.Курсивом выделены новые термины, имена переменных в текстовой части практикума, в комментариях к операторам программ. “Таким

шрифтом” записаны значения для ввода или вывода данных.

3.Тексты программ приводятся, как правило, копией листа модуля.

4.При описании структуры операторов [необязательные операнды] взяты в квадратные скобки, альтернативные параметры – Yes | No – написаны через вертикальную черту.

5.В тексте используются следующие сокращения:

ОП – оперативная память; ПК – компьютер; п/п – программа-процедура; п/ф – программа-функция.

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

4

I.ОБРАБОТКА СИМВОЛЬНЫХ ПЕРЕМЕННЫХ

1.Средства VBA для работы с символьными переменными

1.1.Символьные переменные, строковые функции

Компьютер работает не только с числами, но и с символами. Последовательность символов, используемых программе, называется строкой. Символьные или строковые константы представляют собой набор произвольных символов, принадлежащих языку Basic. Строковые константы на VBA помещаются в кавычки, например Лунаили X=12”. Для описания строковых переменных используется опция String или постфикс $. В табл. 1 показаны параметры двух разновидностей опции String.

Строковые типы данных

Таблица 1

String

Текстовая информация

10 байт + 1 байт

От 0 до

на каждый

приблизительно

(строка) переменной длины

символ

2 миллиардов

символов

Строка постоянной длины

От 1 до

String*n

Длина строки

приблизительно

в n символов

65 400

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

Объединение строк (конкатенация) выполняется с помощью опера-

тора & (можно также использовать +). При объединении двух строк вторая помещается в конец первой, например, в результате команды “пример “ & “№1” получим строку “пример №1”, а по команде

“25” & “693” получим строку “25693”..

Кроме указанного оператора, в VBA используется большое количество

встроенных строковых функций. Рассмотрим некоторые из них.

Функция Len( ) используется для определения длины строки. Общий вид команды:

n% = Len(строка).

Например, функция Len(файл) возвращает число 4.

5

Функция Instr([номер позиции], строка, подстрока) – осуществляет поиск подстроки в строке, начиная с символа, указанного [номером позиции]. Если [номером позиции] не указан, то поиск осуществляется с 1-го символа. Например:

В приведенном примере сочетание “форма” встретилось в слове “Ин форматика”, начиная с позиции номер 3.

Функции UCase( ) и LCase( ) используются, чтобы изменить регистр символов заданной строки на верхний или нижний соответственно. Например:

a$ = Информатика: b$ = Ucase(a$) : c$ = LCase(a$).

В результате переменная b$ = ИНФОРМАТИКА, а c$ = информатика“.

Функции Left( ), Right( ) и Mid( ) используются для выделения части строки. Общий вид команд Left или Right:

Новая строка = Left | Right (Исходная строка, число символов).

Например, в результате команды Left(самолет, 3) получим строку «сам», а по команде Right (пароход, 3) получим строку «ход».

Функция Mid( ) является более универсальной и часто заменяет собой Left( ) и Right( ). Общий вид команды:

Новая строка = Mid (Исходная строка, начальная позиция, [число символов]).

Например, в результате команды Mid (информатика, 3, 5) получим строку «форма». Если необязательный параметр [число символов] опущен, то выделяются символы, начиная с с начальной позиции до конца строки, например, по команде Mid (подберезовик, 4) получим строку «березовик». Если начальная позиция указана равной нулю или больше длины строки, то результатом выполнения функции будет пустая строка. Например, если строка программы содержит операторы:

a$ = Mid (“процессор”, 10, 2): b$ = Mid (“процессор”, 0, 3),

то результатом их выполнения будет значение ”” (пусто) для обеих переменных a$ и b$.

6

Функции LTrim ( ), RTrim ( ) и Trim ( ) отсекают пробелы с начала, конца или с обеих сторон строки соответственно.

В VBA используются также встроенные функции преобразования ти-

пов данных.

Функция SPACE (n) – формирует строку из n пробелов.

Функция STRING (n, строка_символов) – формирует строку из n одинаковых символов, равных первому символу в строке_символов:

1.2. Функции преобразования типов данных и прочие полезные функции

Функция Str( ) преобразует число в строку текста. Если число положительное, то первым символом в полученной строке будет пробел. Общий вид команды:

Строка = Str(число)

Например, в результате команды Str(895) получим строку « 895», а по команде Str (-5678) получим строку « 5678».

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

Number$ = Str (Строка)

Например, в результате команды Val(45Т89) получим число 45, а по команде Val (К593) получим число 0.

Функция Date возвращает текущую дату компьютера в формате “дд.мм.гггг” значением типа Variant.

7

Функция Chr( ) преобразует ASCII-код символа в соответствующий символ. Например, в результате команды Chr(72) получим символ H, а по команде Chr (65) получим символ А. Одним из распространенных символов при формировании строк является Chr (13) – переход к началу новой строки:

Функция Asc ( ) выполняет обратную задачу: преобразует символ в соответствующий ему ASCII-код. Например, в результате команды Asc(0) получим код 48, а по команде Asc (”a“) получим код 97.

2. Пример решения типовых задач и задачи для самостоятельного решения

2.1.Пример решения типовых задач

На листе Excel вызвана определенная пользователем функция text, фактические параметры которой указаны в приведенной ниже палитре функции. Какой результат появится на листе?

Решение:

1. Сопоставляем формальные (a$, b$) и фактические параметры:

8

a$ = «Kazan Power Engineering University» b$ = «U»

2.nl равно числу символов в строке a$ – считаем, получается nl = 34.

3.Открываем цикл по i:

Проверяем i = 1 < nl?, Да! Следовательно, приступаем к выполнению функции Instr: начиная с первой позиции, просматривается строка a$ и в ней ищется позиция, на которой стоит заглавная U – это позиция № 25. Значит k = 25.

4.k не равно нулю, следовательно переходим на оператор с меткой 20, досрочно покидая цикл For … Next.

5.Рассчитываем величину nl – k + 1 = 34 – 25 + 1 = 10.

6.Берем 10 правых символов из строки a$, получаем строку

“University”.

Заканчиваем программу.

Ответ: На листе Excel появится слово “University”.

2.2. Задания для самостоятельного чтения программ

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

Текст программы:

Задание 2. Какие данные появятся на листе Excel при вызове пользовательской функции test2, фактические параметры которой указаны на палитре функции?

9

Задание 3. На компьютере установлена дата 12 июля 2010 г. Какое сообщение появится после выполнения предложенной программы?

Текст программы:

Задание 4. Какие данные появятся на листе Excel при вызове пользовательской функции test4 при вводе данных, показанных на палитре функции? Какое сообщение будет выведено оператором Msgbox? Как вы ответите на вопрос программы?

Задание 5.Какое сообщение появится после выполнения предложенной программы?

Текст программы:

10

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

Текст программы:

Задание 7. В ячейке А2 листа вызвана функция test7 с указанными фактическими параметрами. Какой результат появится после ввода функции? Как вы ответите на вопрос программы?

Задание 8. Какой результат будет показан в окне сообщения программы test8, если в диалоговом окне ввода ввести слово “SALUTE!”?

Текст программы:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  1. Программа-калькулятор «Возведение чисел в большие степени».

    Реализовать точное вычисление возведения в большие степени однозначных чисел (от 2 до 9) с помощью длинной арифметики.

    Описание и архив для тестирования. VBA Excel

  2. С форума от Jonny323. VBA Word

    Привет всем. Очень нужен макрос, думаю не сложный: Печать первой страницы в 6 экземплярах и 2ой страницы в 2 экземплярах.Заранее спасибо.

    скачать docm-файл

  3. ProgressBar на форме. VBA Excel

    Элемент управления, который показывает ход выполнения программы (сколько сделано работы из 100%)…

    Описание программы. и архив для скачивания (xlsm-файл в конце)

  4. Статистические подсчеты в выделенном тексте. VBA Word

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

    скачать docm-файл

  5. Статистические подсчеты в тексте документа. Использование UserForm для ввода данных. VBA Word

    Создать в Word программу — В форме пользователь вводит слово или словосочетание, а программа просматривает весь текст и вставляет в конце документа введенное слово (словосочетание), рядом с которым перечислены все номера страниц, на которых это слово встречается. Совпадения номеров страниц не допускаются. То есть если указанное слово на странице 5 встречается три раза, номер 5 в выводе указывается только один раз. Форма должна состоять из следующих компонентов:
    — 1 TextBox для ввода слова (словосочетания);
    — 1 кнопка для выхода из программы;
    — 1 кнопка для запуска поиска и вставки результата в документ;
    — компонент типа Label с поясняющим текстом над строкой ввода;
    — Кроме того, на форме могут быть компоненты типа Frame;

    скачать docm-файл

  6. Работа с ListBox (Excel). Привязка, сортировка, множественный выбор…

    Описание и архив для скачивания

  7. Программа для решения японской головоломки Судоку (Excel)

    Описание программы. и архив для скачивания

  8. Макросы выполнения запросов (т.е. формирование новой таблицы из базы данных Excel)

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

  9. Сортировка Хоара (алгоритм с wikipedia.org)

    Один из самых быстрых методов сортировки.

    скачать xls-файл

  10. Сортировка Слиянием (с использованием Хоара)

    Один из самых быстрых и оптимальных методов сортировки.

    скачать xls-файл

    или Прочитать описание программы …

  11. VBA Excel: Программа расчета биоритмов человека

    Описание программы. и архив для скачивания

  12. Для blackarrow с programmersforum.ru

    Активация и переключение в Word из Excel. xlsm-файл

  13. Определить в какую координатную четверть
    попадает точка с заданными координатами А(а,b). VBA EXCEL.

    KoordQuartet. Описание и xls-файл

  14. Представление целого числа прописью VBA EXCEL.

    Written Number To String In Words. Описание и xls-файл

  15. Школьная математика.

    Решение КВАДРАТНОГО уравнения.

    скачать docm-файл

  16. VBA EXCEL.

    Задача о ранце. Описание и xls-файл с макросами

  17. VBA EXCEL. Задача о треугольнике. Массив, цикл, логика.

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

    скачать xls-файл

  18. Будильник (alarm clock) в Excel

    Вызов определенной процедуры в назначенное время. xlsm-файл

    Вызов определенной процедуры в назначенное время с обратным отсчетом оставшихся секунд. xlsm-файл

  19. VBA EXCEL.

    Макрос приведения прямоугольной области выделенных данных к верхней треугольной матрице
    Описание и xlsm-файл

  20. VBA EXCEL.

    Макрос заполнения выделенной области случайными числами в диапазоне от 1 до 100
    Описание и xlsm-файл

  21. VBA EXCEL.

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

    скачать xlsm-файл

  22. VBA EXCEL. Как скрыть или отобразить элементы листа.

    Иногда, требуется скрыть от пользователя некоторые возможности (как правило, скрывается размещение данных):
    — посещать другие листы данной книги (лучше не знать о них);
    — прокручивать (горизонтально и вертикально) лист
    — читать и изменять формулы в ячейках листа
    — скрывать линии столбцов и строк
    — скрывать заголовки (названия и номера) столбцов и строк

    скачать xls-файл

  23. VBA EXCEL. Добавить и удалить пункт меню.

    Не сложно добавить (удалить) собственный пункт в меню Excel. Это все описано в справке.
    Но куда интересней поручить эту работу макросу.
    Тогда появляется возможность
    при открытии конкретного документа формировать специальное, индивидуальное меню, а после
    его закрытия привести меню Excel в первоначальное состояние. (Данный пример кода работает только в MS Excel 2003,
    а в 2007 нужны изменения названий панелей управления)

    скачать xls-файл

  24. Клеточные автоматы VBA EXCEL.

    Модель лесного пожара. Описание и xls-файл с макросами и классами

  25. Метод Золотого сечения VBA EXCEL.

    Нахождение экстремума функций. Тестирование алгоритма. Описание и xlsm-файл с макросами и классами

  26. Замена местами максимального и минимального значений ячеек выделенного диапазона. VBA Excel

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

    скачать xlsm-файл

  27. Строковая функция, возвращающая квадраты простых чисел от нуля до заданного числа. VBA Excel

    Составить в Excel функцию, получающую натуральное число N и возвращающее квадраты всех простых чисел от 0 до заданного натурального N.

    скачать xlsm-файл

  28. Пользовательская форма (UserForm) для ввода данных по кредитам коммерческого банка. VBA Excel

    Организуйте ввод сведений в таблицу, содержащую данные о выдаче долгосрочных кредитов коммерческим банком со следующими данными: код получателя кредита, наименование получателя кредита, дата выдачи кредита, срок (3-4 срока), на который выдан кредит (в днях), процент, сумма кредита, дата оплаты процентов по кредиту.

    CreditUserForm — описание и xlsm-файл с макросами

  29. Пользовательская форма (UserForm) для ввода данных по Регистрации туристов. VBA Excel

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

    скачать xlsm-файл

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

    TouristUserForm2 — описание и xlsm-файл с макросами

  30. Пример создания Сводной таблицы макросом VBA Excel (эксель).

    Используются разные виды фильтров, стандартное диалоговое окно открытия файла и др. Описание и xlsm-файл с макросами

  31. Запросы (представление определенных данных) макросом VBA Excel (для курсовой работы).

    О бригадах, выращивающих плододво-ягодные культуры Описание и xls-файл с макросами

Развивающие задачи для VBA Excel — часть 1

Rioran

Дата: Понедельник, 16.02.2015, 12:01 |
Сообщение № 1

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Всем привет и хорошего настроения!

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

Дано.

Подготовительные задачи.

Основной блок задач.

Если интерес к теме будет, но с какими-то задачами будет пробуксовка — выложу подсказки или свои решения. Успехов в развитии!

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


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение отредактировал RioranПонедельник, 16.02.2015, 13:55

 

Ответить

Саня

Дата: Понедельник, 16.02.2015, 15:13 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 1067


Репутация:

560

±

Замечаний:
0% ±


XL 2016

1). Составьте UDF, которая будет возвращать булево значение. ИСТИНА, если в ячейке А1 все символы английского языка, ЛОЖЬ — если есть хотя бы один символ на любом другом языке

предложу такой вариант, ru/eng работает, остальные, по-сути, тоже должны:
[vba]

Код

Function bEngString(sText As String) As Boolean
     Dim abytText() As Byte: abytText = sText

     Dim i As Integer
     For i = 1 To UBound(abytText) Step 2
         If abytText(i) > 0 Then Exit Function
     Next i
     bEngString = True
End Function

[/vba]

 

Ответить

Rioran

Дата: Понедельник, 16.02.2015, 15:46 |
Сообщение № 3

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Саня, изящное решение, снимаю шляпу =) Не думал, что задачи заинтересуют специалистов столь высокого уровня =)

Помоги, пожалуйста, понять трюк. Я превратил UDF в Sub и пошагово проверил работу. Когда ты загоняешь строку в байтовый массив — на каждый символ у тебя получается два байта. Ты проверяешь каждый второй байт, который для английского языка равен 0, для русского 4. Что нужно загуглить, чтобы понять почему каждый символ разбивается на два байта?

Правда, для испанской буквы энньэ «Ñ» мы тоже получаем нулевой второй байт, но это уже, казалось бы, не английский символ.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

ikki

Дата: Понедельник, 16.02.2015, 15:55 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

unicode
например, здесь: http://unicode-table.com/ru/

и там не только эннье:
[vba]

Код

Sub t()
    Dim i&, s$, a() As Byte
    For i = 192 To 255: s = s & ChrW(i): Next
    a = s
End Sub

[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

Сообщение отредактировал ikkiПонедельник, 16.02.2015, 15:56

 

Ответить

ikki

Дата: Понедельник, 16.02.2015, 16:00 |
Сообщение № 5

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

пс. мне не хватает варианта ответа «Задачи интересные, но нет времени»


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

Саня

Дата: Понедельник, 16.02.2015, 16:11 |
Сообщение № 6

Группа: Друзья

Ранг: Ветеран

Сообщений: 1067


Репутация:

560

±

Замечаний:
0% ±


XL 2016

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

Getz, Gilbert. Программирование в MS Office. Руководство по VBA:

К сообщению приложен файл:

6437341.jpg
(93.4 Kb)

 

Ответить

Rioran

Дата: Понедельник, 16.02.2015, 16:17 |
Сообщение № 7

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ikki, спасибо за ключ, всё осознал =) По наваждению сначала UTF гуглил.

варианта ответа «Задачи интересные, но нет времени»

И правда, логичный вариант. Просьба модератору, если возможно, добавить после варианта «Слегка расширил (…)» еще вариант «Задачи интересные, найду время — попробую». Смысл тот же, формулировка слегка позитивнее =)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

Rioran

Дата: Понедельник, 16.02.2015, 16:33 |
Сообщение № 8

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Саня, благодарю. Теперь всё точно на своих местах =) Правда, как мы с Сашей нашли, код не совсем выполняет начальную задачу:

ИСТИНА, если в ячейке А1 все символы английского языка

Для решающих я предполагал немного другой путь. С логикой, как в формулах из Мозгового Штурма


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

Rioran

Дата: Вторник, 17.02.2015, 11:51 |
Сообщение № 9

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Тема задумана как образовательная, поэтому добавлю, что возможна и обратная конвертация: из байт-массива в строку.

[vba]

Код

Sub Rio_Test()

Dim ArrX(11) As Byte
Dim StrX As String

ArrX(0) = 82:   ArrX(1) = 0
ArrX(2) = 105:  ArrX(3) = 0
ArrX(4) = 111:  ArrX(5) = 0
ArrX(6) = 114:  ArrX(7) = 0
ArrX(8) = 97:   ArrX(9) = 0
ArrX(10) = 110: ArrX(11) = 0

StrX = ArrX

MsgBox StrX

End Sub

[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

Саня

Дата: Вторник, 17.02.2015, 12:38 |
Сообщение № 10

Группа: Друзья

Ранг: Ветеран

Сообщений: 1067


Репутация:

560

±

Замечаний:
0% ±


XL 2016

Правда, как мы с Сашей нашли, код не совсем выполняет начальную задачу

[vba]

Код

Function bEngString(sText As String) As Boolean
     Dim abytText() As Byte: abytText = UCase(sText)

     Dim i As Integer
     For i = 1 To UBound(abytText) Step 2
         If abytText(i) = 0 Then
             Select Case abytText(i — 1)
             Case 65 To 90
             Case Else: Exit Function
             End Select
         Else
             Exit Function
         End If

     Next i
     bEngString = True
End Function

[/vba]

 

Ответить

ikki

Дата: Вторник, 17.02.2015, 12:59 |
Сообщение № 11

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

ну, просто для примера (хотя это, конечно. слишком «в лоб»)
[vba]

Код

Function bEngString(sText As String) As Boolean
     With CreateObject(«vbscript.regexp»)
         .Pattern = «^[a-z]+$»
         bEngString = .test(sText)
     End With
End Function

[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

Rioran

Дата: Вторник, 17.02.2015, 14:40 |
Сообщение № 12

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ikki, спасибо за вариант, знакомлюсь с регулярными выражениями =) Уточняю твой паттерн:

[vba]

Код

Function bEngString(sText As String) As Boolean

With CreateObject(«vbscript.regexp»)
     .Pattern = «^[ wd-+.,!?@#$%^&*():;/\|<>» & Chr(34) & Chr(39) & «=]+$»
     bEngString = .test(sText)
End With

       End Function

[/vba]
Где конструкция ^[ ]+$ означает, что соответствие со строкой мы получим только тогда, когда все символы с первого по последний удовлетворяют условиям внутри скобок.
Где w — нас удовлетворяют английские буквы без учета регистра.
Где d — нас интересуют любые числа.
Всё остальное — перечисление символов, где / ищет только /, т.к. системный символ для RegExp. Соответственно, \ ищет только .
Символы « и являются системными для VBA, поэтому их я заменяю на Chr(34) и Chr(39) соответственно.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

Rioran

Дата: Вторник, 17.02.2015, 14:53 |
Сообщение № 13

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

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

Мне нравится, как идёт тема =) Не ожидал, что решая такую простую задачу — можно использовать такие интересные приёмы. Надеюсь, до следующих задач кто-то тоже доберётся.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

ikki

Дата: Вторник, 17.02.2015, 15:20 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

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


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

Rioran

Дата: Вторник, 17.02.2015, 15:41 |
Сообщение № 15

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ikki, да, ты прав, числа включает и нижнее подчеркивание. Из моего паттерна можно убрать d — на функционал не повлияет. Проверил ЗДЕСЬ. Также — не реагирует на специфические немецкие/испанские символы и вообще любые другие языки.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

Rioran

Дата: Пятница, 20.02.2015, 12:05 |
Сообщение № 16

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Уважаемые форумчане, может кто-то застрял на каком-то моменте? Возможно, кому-то в каком-то моменте нужны подсказки? Пожалуйста, обращайтесь =)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

Nic70y

Дата: Пятница, 20.02.2015, 17:30 |
Сообщение № 17

Группа: Друзья

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

Замечаний:
0% ±


Excel 2010

Rioran, вот что обидно (для меня лично) ни где не застрял т.к. даже не изучал тему.
Завидую я Вам макрописцам — что-то изучаете, интересуетесь, а я пока не возникнет необходимость в решении какого-то конкретного вопроса — даже не пошевелюсь… :(


ЮMoney 41001841029809

 

Ответить

Rioran

Дата: Пятница, 20.02.2015, 18:09 |
Сообщение № 18

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Nic70y, расслабьтесь, Николай, все модели поведения имеют свои преимущества =) Например, у Вас — максимальная отдача от затраченной энергии. Никаких лишних движений, только практика ради практики и решение сложившихся вопросов. В то время как для любителей абстрактных задач решение оных повышает вероятность и эффективность решения вопросов, которые они ВОЗМОЖНО встретят в будущем. В первом случае больше ресурсов затрачивается на этапе решения, потом, когда задача есть. Во втором случае — затрачивается больше ресурсов заранее, своего рода «инвестиции» в будущие решения.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

RAN

Дата: Пятница, 20.02.2015, 19:04 |
Сообщение № 19

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Пишите грамотно, на нормальном русском или, если этот язык Вам не родной, английском.
Open>Close>End


Быть или не быть, вот в чем загвоздка!

 

Ответить

Rioran

Дата: Вторник, 24.02.2015, 13:52 |
Сообщение № 20

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Английские письмена внутри документа никоим образом не влияют на исходную задачу и изначальные данные. Это намеренно привнесённый «отвлекающий фактор». Всё, что нужно, дано в посте №1.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Задания для microsoft office word 2007
  • Задания для microsoft excel 2010
  • Задания для excel фильтры
  • Задания для excel уравнение
  • Задания для excel стоимость