Задачник на VBA (часть I)*
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение высшего профессионального образования
«КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ЭНЕРГЕТИЧЕСКИЙ УНИВЕРСИТЕТ»
Н.К. ПЕТРОВА, М.М. ВОЛЧЕНКО
ПРОГРАММИРОВАНИЕ НА VBA В ПРИМЕРАХ И ЗАДАЧАХ
ЧАСТЬ I. БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ
Практикум к лабораторным работам, практическим занятиям, расчетному заданию и самостоятельной работе студентов по дисциплинам
«Информатика», «Компьютерные технологии в науке и образовании», «Программные средства информатики», «Новые информационные технологии»
Казань 2010
УДК 681.3 ББК 32.973 П78
Рецензенты:
кандидат физико-математическихнаук, доцент Татарского государственного педагогического университетаИ.Н. Голицына;
кандидат физико-математическихнаук, доцент Казанского государственного энергетического университетаР.А. Ишмуратов
П78 Петрова Н.К., Волченко М.М.
Программирование на VBA. Часть I. Базовые алгоритмические структуры. Практикум / Н.К. Петрова, М.М. Волченко. – Казань: Казан. гос. энерг. ун-т,2010. – 55 с.
Предлагается своего рода «Задачник» по программированию, ориентированный на обучение студентов основам алгоритмизации математических и инженерных задач средствами языка VBA в приложении к Excel.
Содержание I части охватывает разделы программы, посвященные базовым алгоритмическим структурам: линейные программы, «ветвление», «цикл» — арифметический и итерационный. Изложение материала оформлено в виде отдельных разделов, в которых кратко представлены основные теоретические сведения.
Типовые задачи даются с подробными решениями. Имеется большое количество задач для самостоятельной работы. Задания делятся на три типа: 1 – умение «читать» готовые программы, 2 – разрабатывать программы по шаблонному алгоритму и 3 – разрабатывать программы с неявным алгоритмом.
Практикум предназначен для студентов всех специальностей КГЭУ, изучающих «Информатику».
УДК 681.3 ББК 32.973
© Казанский государственный энергетический университет, 2010
3
Предисловие
Вучебной литературе имеется не так много пособий по практической работе на VBA, ориентированных на решение математических, инженерных задач. Данный практикум разработан с целью восполнить существующий пробел. Он предназначен для обучения – самостоятельно или под руководством преподавателя – основам алгоритмизации с использованием языка VBA (Visual Basic for Application) в приложении к одному из самых популярных приложений MS Office – MS Excel.
Впрактикум включены типовые задачи и даются методы и примеры их решения. Каждому разделу предшествует краткое введение, состоящее из определений и описания операторов языка. Многочисленные примеры демонстрируют разные возможности работы с ячейками рабочего листа Excel, с диалоговыми окнами ввода и вывода. Основной акцент сделан на умение работать с математическими формулами, с числами в формате с плавающей и фиксированной точкой, грамотно сопоставлять фактические и формальные параметры при вызове программ как с листа Excel, так и из программ пользователя.
Втексте практикума приняты такие соглашения:
1.Элементы языка VBA в текстовой части практикума выделены
таким стилем.
2.Курсивом выделены новые термины, имена переменных в текстовой части практикума, в комментариях к операторам программ.
3.Примеры разбираемых программ даются, как правило, с комментариями, при этом текст программы пишется курсивом. Тексты программ для самостоятельного разбора приводятся, как правило, в рамке.
4.При описании структуры операторов[необязательные операнды] взяты в квадратные скобки, альтернативные параметры –Yes | No –
написаны через вертикальную черту.
5. В тексте используются следующие сокращения:
ОП – оперативная память; ПК – компьютер; п/п – программа-процедура;п/ф –программа-функция
При подготовке данного практикума авторы использовали многолетний опыт работы по преподаванию курса информатики в Казанском государственном энергетическом университете и Казанском государственном университете.
4
Общие теоретические сведения по программированию на VBA
I. Структура программ на VBA. Процедуры и функции пользователя
Программа VBA представляет собой совокупность процедур и функций, размещенных в зависимости от особенностей решаемой задачи, в одном или нескольких модулях. Каждый модуль имеет две области: общую область и область подпрограмм. В общей области помещаются операторы описания переменных, которые являются общими для всех процедур и функций этого модуля. В области подпрограмм помещается только код подпрограммы.
В VBA программный код, реализующий какие-либодействия, оформляется в видепроцедур ифункций. Благодаря этому создаваемые программы имеют хорошую структурированность и наглядность. Разработанные отдельные функции или процедуры можно накапливать в библиотеках и в дальнейшем использовать их по мере необходимости.
Программа-процедура (п/п) на VBA имеет следующую структуру:
[Private|Public] Sub ИмяПроцедуры (СпискиПараметров) <<Тело п/п>>
End Sub
где [Private|Public] – необязательные ключевые слова, определяющие область видимости программы;Sub – ключевое слово, определяющее тип п/п.ИмяПроцедуры – имя п/п (дает сам пользователь).СписокПараметров служит для передачи процедуре исходных данных для вычислений (может отсутствовать). Он состоит из элементов списка, разделенных запятыми.
Этот элемент списка параметров имеет синтаксис:
ИмяЭлемента [As ТипДанных]
где ИмяЭлемента – идентификатор;As – ключевое слово;ТипДанных – тип данных элемента списка (Табл. 1.1).
Процедура пользователя может быть вызвана из другой п/п оператором Call или указанием ее имени.
5
Например: |
|
Private Sub Prog1( ) |
Начало процедуры с именем Prog( ) |
Dim t As Integer |
Описание типа переменной t |
t = 2 |
Присвоение переменной t значения 2 |
Call Prog2 (t) |
Вызов процедуры Prog2 (t) с фактическим |
[Другие операторы] |
параметром t |
Prog2 (t) |
другой способ вызова п/п Prog2 |
[Другие операторы] |
|
End Sub |
Конец процедуры Prog1 |
Public Sub Prog2(x As |
Начало п/п Prog2 с формальным параметромх |
Integer) |
|
MsgBox x |
Выдача значения x в специальном окне |
End Sub |
Конец процедуры Prog2 |
Программа–функция (п/ф) – это программа, которая выполняет действия в пределах своего блока и возвращает единственное значение. Функция пользователя имеет следующий вид:
[Private|Public]Function ИмяФункции([СпискиПараметров])[As ТипДанных]
<<Тело п/ф>>
ИмяФункции = ВозвращаемоеЗначение
End Sub
Function – ключевое слово, указывающее на то, что это функция; остальные параметры те же, что и вSub. ВозвращаемоеЗначение – значение, возвращаемой функцией.
Обращение к п/ф может производиться из процедуры другой функции. Если в функции предусмотрено рекурсивное обращение, то ее можно вызвать из нее самой. Если функция записана в модуле, то ее можно вызвать из Excel с помощью Мастера функций, так как функция пользователя заносится в библиотеку функций.
Пример:
Private Sub Prog3( ) Dim u,t As Integer
t = 2
y = Func ( t ) [Другие операторы] End Sub
Public Function Func(x As Integer) As Integer
f % = x ^ 2 + x + 5
func = f % End Function
6
Начало вызывающей п/п Задание типа переменным u,t
Присвоение переменной t значения 2 Вызов п/фFunc с фактическим аргументомt
Конец п/п
Начало п/ф Func, имеющей целочисленный тип. Формальный аргументt имеет целочисленный тип
Вычисление полинома по t и присвоение результата целочисленной переменнойf % Присвоение возвращаемого значения Конец п/ф
При работе с обоими типами программ следует аккуратно соблюдать соответствие между фактическими и формальными параметрами, как по количеству их, так и по типу.
II. Типы констант. Представление числовых констант в формате с фиксированной и плавающей десятичной точкой
Константой называется некоторая величина, не изменяющая своего числового или символьного значения в течение выполнения всей программы. Имеются два типа константчисловые и символьные.
Числовые константы: представляют собой положительные или отрицательные числа двух видов:
а)целочисленные, представляющие собой положительные и отрицательные числа и ноль, при их записи не должна использоваться
десятичная запятая: -100 |
2 |
0 +458 ; |
||
б)вещественные константы – все действительные числа, включая и |
||||
целые. Записываются в двух форматах: |
100. |
–0.001 |
+2.563 |
|
с фиксированной точкой, например, |
||||
(вместо десятичной запятой используется при записи точка) |
||||
с плавающей точкой,например, |
2.5·10-2,записываемое как |
|||
2.5Е-02или 2.5D-02. |
Здесь |
2.5 – |
мантисса, Е, D – |
десятичная |
экспонента одинарной (Е) или двойной (D) точности.
Например: 1,510-3 1.5Е-3=0.15Е-02=15Е-04=0.0015,
150000 1.5Е+05,
0,0000254 2.54Е-05.
7
III. Объявление переменных на VBA
Переменные – это объекты, предназначенные для хранения данных. В различные моменты времени переменные могут хранить разные значения. Имена переменных позволяют различать их в программе, осуществлять доступ к различным участкам памяти для записи данных и их извлечения.
Перед использованием переменных в программе их нужно объявить (декларировать). При объявлении переменной необходимо указать, что объявляется переменная, задать имя переменной и указать ее тип. Тип определяет способ представления/хранения переменной в оперативной памяти.
Для эффективного использования памяти и времени ПК необходимо правильно выбрать тип переменной. Объявить переменную – значит заранее сообщить программе о ее существовании. Объявление переменной производится специальным оператором: Dim переменная [As тип]
Одновременно с объявлением переменной после ее имени можно
записать ключевое слово |
As, после которого |
задается |
тип переменной |
(Табл. 1.1). |
Dim power As |
||
Например: оператор |
single |
приписывает |
переменной power вещественный тип одинарной точности.
Задать тип переменной также можно, используя специальный символ в конце имени – постфикс (см. табл. 2) – или, используя инструкцию
DefТип.
Например, если на уровне модуля дана инструкция DefInt I-N, это означает, что всем переменным, имена которых начинаются с букв, лежащих в диапазоне отI доN (и прописных, и строчных), в программах данного модуля будет присвоен типInteger. Другие значения инструкцииDefТип представлены в Табл. 1.2.
8
Таблица 1.1 Некоторые типы переменных VBA
Тип |
Хранимая |
Занимаемая |
Диапазон значений |
|
информация |
память |
|||
Целочисленные типы |
||||
Byte |
Целые числа |
1 байт |
От 0 до 255 |
|
Boolean |
Логические |
2 байт |
True или False |
|
значения |
||||
Integer |
Целые числа |
2 байт |
От -32768 до 32 767 |
|
Long |
Длинное целое |
4 байт |
От -2147 483 648 до 2 147 483 |
|
647 |
||||
Типы с плавающей точкой |
||||
От -3,402823E38до |
||||
Вещественные |
-1,401298E-45 |
|||
Single |
числа с плавающей |
4 байт |
для отрицательных значений; |
|
точкой одинарной |
(7 цифр) |
от 1,401298E-45до |
||
точности |
3,402823E38 |
|||
для положительных значений |
||||
От -1,79769313486232E308 |
||||
Вещественные с |
до -4,94065645841247E-324 |
|||
8 байт |
для отрицательных значений; |
|||
Double |
плавающей точкой |
|||
(15 цифр) |
от 4,94065645841247E-324 |
|||
двойной точности |
||||
до 1,79769313486232E308 для |
||||
положительных значений |
||||
Строковые типы |
||||
Текстовая |
||||
String |
информация |
10 байт + 1 байт |
От 0 до приблизительно |
|
(строка) переменной |
на каждый символ |
2 миллиардов символов |
||
длины |
||||
String*n |
Строка постоянной |
Длина строки |
От 1 до приблизительно |
|
длины в n символов |
65 400 |
|||
Типы Variant |
||||
Variant |
Значения любого из |
16 байт для чисел; |
Любое числовое или |
|
перечисленных |
22 байт + 1 байт |
строковое значение вплоть до |
||
типов данных |
на каждый символ |
границ диапазона для типа |
||
строки |
Double. |
|||
9
Таблица1.2. ЗначенияинструкцииDefТиписоответствующихпостфиксов
Инструкция |
Тип данных |
Постфикс |
Инструкция |
Тип данных |
Постфикс |
DefBool |
Boolean |
нет |
DefSng |
Single |
! |
DefByte |
Byte |
нет |
DefDbl |
Double |
# |
DefInt |
Integer |
% |
DefStr |
String |
$ |
DefLng |
Long |
& |
DefVar |
Variant |
нет |
IV. Значения и типы переменных по умолчанию
Если в программах модуля операторы описания типа или постфиксы в именах переменных отсутствуют, то работает принцип умолчания
(табл. 1.3), согласно которому все переменные принимают тип Variant и
соответствующие значения. Применение данного типа позволяет выполнять операции, не обращая внимания на тип данных, которые они содержат. Удобен для объявления переменных, тип которых заранее неизвестен. Переменные этого типа могут содержатьспециальные значения: Empty (пусто), Null (Нуль), Error (ошибка).
Таблица 1.3. Значения и типы переменных разных типов по умолчанию
Тип |
Значение |
Тип |
Значение |
Тип |
Значение |
Boolean |
Ложь/False |
Single |
0,0 |
String |
““ |
Byte |
0 |
Double |
0,0 |
String*n |
“¬ . . . ¬“ |
Integer |
0 |
Long |
0 |
n пробелов |
|
Variant |
Empty, Null, Error |
Из таблицы следует, что если переменная описана как числовая
(любого типа – Byte, Integer, Long, Single, Double) то ее значение по умолчанию равно 0 (ноль). Для символьных переменных типаString значение по умолчанию «» – отсутствие символов, еслиString*n, то ее значение будет равноn пробелам. Для логических (Boolean) переменных значение по умолчанию будет «ложь»
Несколько правил для корректного использования разных типов данных в одной программе или в одном выражении:
1. Переменные, описанные с помощью DIM на уровне модуля, доступны для всех процедур в данном модуле. Переменные, описанные на уровне п/п, доступны только в данной п/п.
10
2.В операторах присваивания следует иметь в виду, что значение выражения может быть присвоено переменной, только если оно имеет совместимый с этой переменной тип данных. Невозможно присвоить строковое выражение числовой переменной или числовое выражение строковой переменной. Такая попытка приведет к ошибке во время компиляции.
3.Переменным типа Variant могут присваиваться как строковые, так и
числовые выражения. Однако обратное не всегда верно.
4.Присвоение выражения с одним из числовых типов переменной с другим числовым типом данных преобразует значение выражения в тип данных результирующей переменной. Например: еслиa % = 2.33, тоа % будет иметь целое значение 2 (округление с недостатком) илиb % = 2.65, тоb % = 3 (округление с избытком), таким образом, присвоение вещественного числа целочисленной переменной приводит к округлению его до ближайшего целого (аналогично функцииINT).
5.Если присваивается численное выражение типизированной переменной с меньшей точностью (например, Double → Long), VBA
округляет значение выражения для совпадения с точностью переменной, принимающей новое значение.
6. Если переменной типа String присваивается переменная типаVariant, содержащая число, VBA автоматически преобразует это число в строку.
V. Встроенные математические функции
Таблица 1.4. Некоторые стандартные функции VBA
Функция |
Выполняемое действие |
|
Atn(аргумент) |
Возвращение арктангенса угла в радианах |
|
Sin (аргумент) |
Возвращение синуса угла, заданного в радианах |
|
Cos(аргумент) |
Возвращение косинуса угла, заданного в радианах |
|
Tan(аргумент) |
Возвращение тангенса угла, заданного в радианах |
|
Exp(аргумент) |
Возвращение значения ex, где x — значение переменной |
|
или введенное число |
||
Log(аргумент) |
Возвращение натурального ln(x) логарифма числаx |
|
Sqr(аргумент) |
Возвращение квадратного куреня числа |
|
Randomize |
Запуск генератора случайных чисел |
|
studfiles.net
Примеры решения задач — стр. 2
Примеры
решения задач
Приведем
несколько примеров решения задач на VBA.
Пример
1. Вычислить значение
выражения a равного
,
при x = 3, y =
2.5
Решение.
Sub
выражение1()
Dim
A, x, y
x
= 3
y
= 2.5
A
= 2 * x — 3 * y
MsgBox
(A)
End
Sub
Пояснение
решения.
В
строке Dim
A, x, y объявляются
переменные A, x, y.
Пример 2.
Вычислить значение выражения a равного
,
при x = 3, y =
2.5
Замечание:
значения x и y вводит
пользователь.
Решение.
Sub выражение2()
Dim A, x, y As Double
x = InputBox(«Введите
x=»)
y = InputBox(«Введите
y=»)
A = 2 * x — 3 * y
MsgBox (A)
End Sub
Пояснение решения.
В строке Dim
A, x, y
As
Double описываются
переменные A, x, y как
числа двойной точности.
При использовании
строки
x = InputBox(«Введите
x=»)
появиться окно
Пример 3.
Вычислить значение выражения a равного
,
при x = 3, y =
2.5
Замечание:
значения x и y вводит
пользователь, ответ выводится в виде
«a =».
Решение.
Sub выражение3()
Dim A, x, y As Double
Dim ответ As String
x = InputBox(«Введите x=»)
y = InputBox(«Введите y=»)
A = 2 * x — 3 * y
ответ = «a=» + Str(A)
MsgBox (ответ)
End
Sub
Пояснение решения.
В строке Dim ответ As
String описывается
переменная ответ как
строковая.
Код Str(A) преобразует
значение переменной A в
строку.
Пример 4.
Вычислить значения выражений при x = 3, y =
2.5
,
,
,
,
Решение.
Sub выражение4()
Dim A, b, c, d, a1, x, y As Double
x = InputBox(«Введите
x=»)
y = InputBox(«Введите
y=»)
A = 2 * x — 3 * y
b = (2 * x — 3 * y) / 2
c = (2 * x — 3 * y) / 2 * x
d = (2 * x — 3 * y) / (2 * x)
a1 = (2 * x — 3 * y) / (2 * x) + (5 —
x) / (3 + y)
MsgBox («a=» + Str(A))
MsgBox («b=» + Str(b))
MsgBox («c=» + Str(c))
MsgBox («d=» + Str(d))
MsgBox («a1=» + Str(a1))
End
Sub
Пример 5. Выполнить
пример 4, другим способом, с помощью
вспомогательных переменных.
Решение.
Sub выражение5()
Dim A, b, c, d, a1, a2, b1, c1, c2,
x, y As Double
x = InputBox(«Введите
x=»)
y = InputBox(«Введите
y=»)
A = 2 * x — 3 * y
b = (2 * x — 3 * y) / 2
c = (2 * x — 3 * y) / 2 * x
d = (2 * x — 3 * y) / (2 * x)
a1
= (2 * x
— 3 * y)
/ (2 * x)
+ (5 — x)
/ (3 + y)
‘ новое решение
b1 = A / 2
c1 = b * x
c2 = b / (2 * x)
a2 = d + (5 — x) / (3 + y)
MsgBox («a=» + Str(A))
MsgBox («b=» + Str(b))
MsgBox («c=» + Str(c))
MsgBox («d=» + Str(d))
MsgBox («a1=» + Str(a1))
MsgBox («b1=» + Str(b1))
MsgBox («c1=» + Str(c1))
MsgBox («c2=» + Str(c2))
MsgBox («a2=» + Str(a2))
End Sub
Пример 6. Вычислить
площадь треугольника по трем известным
сторонам. Например, a = 3, b = 4, c = 5.
Решение.
Sub Герон1()
Dim A, b, c, p, s As Double
A = 3
b = 4
c = 5
p = (A + b + c) / 2
s = Sqr(p * (p — A) * (p — b) * (p —
c))
MsgBox («s=» + Str(s))
End Sub
Пояснение решения.
Для решения задачи
используется формула Герона.
Пример 7.
Вычислить площадь треугольника по трем
известным сторонам.
Решение.
Sub Герон2()
Dim A, b, c, p, s As Double
A = Val(InputBox(«Введите a=»))
b = Val(InputBox(«Введите b=»))
c = Val(InputBox(«Введите c=»))
p = (A + b + c) / 2
s = Sqr(p * (p — A) * (p — b) * (p —
c))
MsgBox («s=» + Str(s))
End Sub
Пояснение решения.
Код Val(InputBox(«Введите a=»))
преобразует введенное значение
через InputBox в
число, так как InputBoxвозвращает
строку. Если такого преобразования не
сделать, то программа правильно
вычислять s не
будет.
Пример 8.
Вычислить гипотенузу прямоугольного
треугольника по двум катетам.
Решение.
Sub гипотенуза()
Dim a, b, c, p, s As Double
a = Val(InputBox(«Введите a=»))
b = Val(InputBox(«Введите b=»))
c = Sqr(a ^ 2 + b ^ 2)
MsgBox («c=» + Str(c))
End Sub
Организация
ветвления
на языке Visual
Basic for Application
Необходимость
обработки критических ситуаций возникает
при программировании довольно часто.
Например,
при решении задачи: вычислить значение
выражения .
Sub выражение6()
Dim x, y, z As
Double
x =
Val(InputBox(«Введите x=»))
y =
Val(InputBox(«Введите y=»))
z = (x + y) /
(x — y)
MsgBox («z=»
+ Str(z))
End Sub
При вводе
значений x =
3, y =
3 программа прекратит работу и выдаст
сообщение
о прекращении
работы, так как произошло деление на 0.
Нажатие на кнопку Debug позволяет
перейти в строку, в которой состоялась
ошибка выполнения (Run—time
error).
Необходимо,
преобразовать программу следующим
образом:
Sub выражение7()
Dim x, y, z As
Double
x =
Val(InputBox(«Введите x=»))
y =
Val(InputBox(«Введите y=»))
If x — y
0 Then
z = (x + y) /
(x — y)
MsgBox («z=»
+ Str(z))
Else
MsgBox
(«Знаменатель
равен
=0»)
End
If
End
Sub
Для
организации ветвлений в языке VBA предусмотрено
несколько операторов: If и Select
Case.
Общий вид
оператора If:
If выражение Then [инструкции]
[ElseIf выражение-n Then [иначе_если_инструкции]
…
[Else [иначе_инструкции]]
End
If
Выражение
должно возвращать логическое значение:
истина или ложь (True или False).
Общий вид
оператора Select
Case:
Select
Case выражение
[Case выражение—n
[инструкции —n]]
…
[Case
Else
[иначе_инструкции]]
End Select
Пример
использования Select
Case.
Sub пример_select_case()
Dim Number
Number = 8
Select Case
Number
Case 1 To 5
MsgBox «Между
1 и 5»
Case 6,
7, 8
MsgBox «Между
6 и 8»
Case 9 To 10
MsgBox
«Между 9 и 10»
Case
Else
MsgBox «Не
в диапазоне от 1 до 10»
End Select
End Sub
При
программировании исключительных
ситуаций необходимо предусмотреть все
возможные случаи. Поясним это на примерах.
Пример 1.
Вычислить значение выражения
Решение.
Sub
выражение8()
Dim x, y, z As
Double
x =
Val(InputBox(«Введите x=»))
y =
Val(InputBox(«Введите y=»))
If x — y
0 And x > 0 Then
z = (x + y) /
(x — y) + Sqr(x)
MsgBox («z=»
+ Str(z))
Else
MsgBox
(«Выражение не имеет смысла»)
End
If
End
Sub
Пояснение
решения.
Исключительная
ситуация возникает, когда в знаменателе
получается нуль и подкоренное выражение
меньше нуля.
Пример 2. Вычислить
площадь треугольника по трем известным
сторонам.
Решение.
Sub Герон3()
Dim A, b, c, p,
s As Double
A =
Val(InputBox(«Введите a=»))
b =
Val(InputBox(«Введите b=»))
c =
Val(InputBox(«Введите c=»))
If (A + b >
c) And (A + c > b) And (b + c > A) Then
p = (A + b + c)
/ 2
s = Sqr(p * (p
— A) * (p — b) * (p — c))
MsgBox
(«s=»
+ Str(s))
Else
MsgBox
(«Треугольник не существует»)
End
If
End
Sub
Пояснение
решения.
Предложенная
программа проверяет существование
треугольника, и не будет работать при
введенных отрицательных значениях a, b, c.
Правильное
решение в примере 3.
Пример 3. Вычислить
площадь треугольника по трем известным
сторонам.
Sub Герон4()
Dim A, b, c, p,
s As Double
Dim d1, d2,
tr_ok As Boolean
A =
Val(InputBox(«Введите a=»))
b =
Val(InputBox(«Введите b=»))
c =
Val(InputBox(«Введите c=»))
d1 = (A >=
0) And (b >= 0) And (c >= 0)
d2 = (A + b >
c) And (A + c > b) And (b + c > A)
tr_ok = d1 And
d2
If tr_ok Then
p = (A + b + c)
/ 2
s = Sqr(p * (p
— A) * (p — b) * (p — c))
MsgBox
(«s=»
+ Str(s))
Else
MsgBox
(«Треугольник не существует»)
End
If
End
Sub
Пояснение
решения.
Программа
вычисляет площадь треугольника, правильно
обрабатывая исключительные ситуации.
Программирование
циклов на языке Visual
Basic
for
Application
Организация
выполнения повторяющихся действий
в VBA может
быть выполнена несколькими операторами,
которые условно разделяют на цикл-пока,
цикл-до, цикл-для.
Оператор While
Общий
вид оператора While:
While выражение
[инструкции]
Wend
Оператор While предназначен
для организации цикла-пока.
Инструкции будут
выполняться пока выражение будет
истинно.
Пример.
Вычислить сумму чисел от 0 до 100.
Решение.
Sub
сумма1()
Dim
x, s As Double
x
= 0
s
= 0
While
x
s
= s + x
x
= x + 1
Wend
MsgBox
(«s=» + Str(s))
End Sub
Пояснение
решения.
В
переменной s накапливается
значение суммы.
Оператор Do
While
Общий
вид оператора Do
While:
Do [While выражение]
[инструкции]
[Exit
Do]
[инструкции1]
Loop
Оператор Do
While предназначен
для организации цикла-пока.
Инструкции будут
выполняться пока выражение будет
истинно. Конструкция Exit
Do предназначена
для преждевременного выхода из цикла.
Пример.
Вычислить сумму чисел от 0 до 100.
Решение.
Sub
сумма2()
Dim
x, s As Double
x
= 0
s
= 0
Do
While x
s
= s + x
x
= x + 1
Loop
MsgBox
(«s=» + Str(s))
End
Sub
Оператор Do
Loop Until
Общий
вид оператора Do
Loop
Until:
Do
[инструкции]
[Exit
Do]
[инструкции1]
Loop [Until выражение]
Оператор Do
Loop
Until предназначен
для организации цикла-до.
Инструкции будут
выполняться до момента, когда выражение станет
истинным. Конструкция Exit
Do предназначена
для преждевременного выхода из цикла.
Пример.
Вычислить сумму чисел от 0 до 100.
Решение.
Sub
сумма3()
Dim
x, s As Double
x
= 0
s
= 0
Do
s
= s + x
x
= x + 1
Loop
Until x > 100
MsgBox
(«s=» + Str(s))
End
Sub
Оператор For
Общий
вид оператора For:
For счетчик
= начальное_знач To конечное_знач
[Step шаг]
[инструкции]
[Exit
For]
[инструкции1]
Next [счетчик]
Оператор For предназначен
для организации цикла-для.
Инструкции
будут выполняться определенное количество
раз, задаваемое в счетчик,
начиная с начального значение
(начальное_знач) до
конечного значения (конечное_знач) с
некоторым шагом (шаг). Конструкция Exit
Forпредназначена
для преждевременного выхода из цикла.
Пример.
Вычислить сумму чисел от 0 до 100.
Решение.
Sub сумма4()
Dim
x, s As Integer
s
= 0
For
x = 0 To 100
s
= s + x
Next
x
MsgBox
(«s=» + Str(s))
End
Sub
Примеры
решения задач
Пример
1. Представить таблицу квадратов чисел
от 2 до 10.
Решение.
Для
отображения результатов воспользуемся Excel и
для доступа к ячейкам функцией Cells (номер_строки,
номер_колонки).
Sub квадраты()
Dim
x
Cells(2,
1).Value = «x»
Cells(3,
1).Value = «x^2»
For
x = 2 To 10
Cells(2,
x).Value = x
Cells(3,
x).Value = x ^ 2
Next
x
End
Sub
Пример
2. Составить программу определения
наибольшего общего делителя (НОД) двух
натуральных чисел.
Решение.
Наибольший
общий делитель двух натуральных чисел
— это самое большое натуральное число,
на которое они делятся. Например, у чисел
12 и 18 наибольшие делители: 2, 3, 6. наибольшим
общим делителем является число 6. Это
записывается так:
НОД(12,
18) = 6.
Идея алгоритма
Евклида для
нахождения НОД основана на том свойстве,
что если M>N,
то
НОД(M, N)
= НОД(M-N, N).
Иначе
говоря, НОД двух натуральных чисел равен
НОД их положительной разности и меньшего
числа.
Sub Евклид()
Dim
M, N, NOD
M
= Cells(1, 2)
N
= Cells(2, 2)
While
M N
If
M > N Then
M
= M — N
Else
N
= N — M
End
If
Wend
NOD
= M
Cells(3,
2).Value = NOD
End Sub
Пример
3. Построить график функции: улитку
Паскаля.
Улитка
Паскаля задается следующим образом:
x=A*cos(t)+B*cos(t)
y=A*cos(t)sin(t)+B*sin(t),
A>B, B>0, 0
Решение.
1.
Подготовить данные в электронной таблице
2. Ввести
код программы.
Sub
улитка_паскаля()
Dim
a, b, Pi, t As Double
Dim
i As Integer
a
= Cells(1, 2)
b
= Cells(2, 2)
Pi
= 3.14
i
= 2
t
= 0
While
t
x
= a * Cos(t) + b * Cos(t)
y
= a * Cos(t) * Sin(t) + b * Sin(t)
Cells(3,
i).Value = x
Cells(4,
i).Value = y
t
= t + 0.1
i
= i + 1
Wend
End
Sub
3. Построить
график с помощью мастера диаграмм,
выбрав точечную
диаграмму.
4. Изменить
данные a и b.
A=2
B=1
5.
Перезапустить макрос.
Создание пользовательских
форм на языке Visual
Basic
for
Application
Для
пользователя часто необходимо создать
собственную среду, в которой на специальной
форме располагаются все необходимые
инструменты для работы. VBA располагает
для этого всеми средствами.
Приведем
создание проекта «Вычисление площади
треугольника по трем известным сторонам»
по шагам.
Шаг
1. Создание
первоначальной формы.
1.1.
Выполнить Сервис
® Макрос ® Редактор Visual
Basic.
1.2.
Вставить форму с помощью
меню Insert ® UserForm или кнопкой .
1.3. Дать
внутреннее имя форме Форма_Герон с
помощью окна Properties,
выставляя свойство (Name) равноеФорма_Герон.
1.4. Присвоить
заголовку форму имя Герон с
помощью окна Properties,
выставляя свойство Caption равное Герон.
1.5. Создать
надпись «Вычисление площади треугольника»
с помощью инструмента Надпись панели
элементов. При необходимости воспользоваться
окном Properties,
свойствами Font, Align.
1.6. В
результате получиться следующий рисунок.
Шаг
2. Создание
элементов для ввода данных.
2.1. Создать
блок для ввода данных стороны a с
помощью инструмента Поле панели
элементов. В окнеProperties,
присвоить ему свойство (Name) равное a_Textbox.
2.2. Создать
надпись «Сторона A=»
с помощью инструмента Надпись панели
элементов. При необходимости воспользоваться
окном Properties,
свойствами Font, Align.
2.3. В
результате получиться следующее.
2.4.
Аналогично создать блоки для ввода
значений сторон B, C и
вывода площади треугольника S.
Для B —b_Textbox, C — c_Textbox, S — s_Textbox.
Шаг
3. Создание
элемента для начала вычислений.
3.1. Создать
кнопку «Вычислить!» с помощью
инструмента Кнопка панели
элементов. В окне Properties,
выставить свойства (Name) равное Calc_Button, Caption равное
«Вычислить!».
3.2. Сделать
двойной щелчок на кнопке Вычислить! и
ввести программный код.
Private
Sub Calc_Button_Click()
Dim
A, b, c, p, s As Double
Dim
d1, d2, tr_ok As Boolean
A
= Val(a_TextBox.Value)
b
= Val(b_TextBox.Value)
c
= Val(c_TextBox.Value)
d1
= (A >= 0) And (b >= 0) And (c >= 0)
d2
= (A + b > c) And (A + c > b) And (b + c > A)
tr_ok
= d1 And d2
If
tr_ok Then
p
= (A + b + c) / 2
s
= Sqr(p * (p — A) * (p — b) * (p — c))
s_TextBox.Value
= s
MsgBox
(«s=» + Str(s))
Else
MsgBox
(«Треугольник не существует»)
s_TextBox.Value
= «Треугольник не существует»
End
If
End
Sub
Шаг
4. Запуск
формы.
4.1.
Осуществить запуск формы с помощью Run ® Run
Sub/UserForm или
с помощью кнопки .
Обработка массивов
на
языкеVisual
Basic for Application
В
повседневной жизни часто приходится
встречаться с информацией, представленной
в табличном виде. Для обработки можно
использовать электронные таблицы, а
также VBA.
Массив
– это структурированный тип данных,
конечная упорядоченная совокупность
данных одного типа, доступ к которым
осуществляется по индексу (порядковому
номеру). Массивы необходимы, когда
требуется несколько раз обращаться к
одной и той же группе однотипных данных.
Массивы
могут содержать данные любого типа: тип
элементов массива распознается по
идентификатору. Массивы необходимо
объявлять. С помощью оператора Dim.
При объявлении указывается имя массива,
размерность и количество элементов по
каждой размерности (эти количества
должны быть определены до объявления
массива).
Использование
массивов значительно упрощает работу
с группами однотипных данных.
Все
действия с массивами выполняются
поэлементно, в цикле. Поскольку массив
— это последовательность с известным
числом элементов, удобнее использовать
цикл For.
Пример.
Вычислить средний рост по данным,
записанным в электронной таблице.
Результат
вычисления среднего роста будут записаны
в ячейку B9.
Решение.
Sub
средний_рост()
Dim
Rost(6) As Double
Dim
i As Integer
Dim Сумма,
Среднее As Double
‘ ввод
таблицы для обработки
For
i = 1 To 6
Rost(i)
= Cells(1 + i, 2).Value
Next i
‘ нахождение
суммы чисел в таблице
Сумма =
0
For
i = 1 To 6
Сумма = Сумма +
Rost(i)
Next
i
‘ вычисление
среднего
Среднее
= Сумма / 6
‘вывод
Cells(9,
2).Value = Среднее
MsgBox
(Среднее)
End
Sub
Пояснение
решения.
В
строке Dim
Rost(6) As
Double объявляется
массив чисел двойной точности
именем Rost размерностью
6, то есть одномерная таблица Rost емкостью
6 (шесть) ячеек.
Аналогичным
образом можно обрабатывать и двумерные
массивы.
Пример.
Определить, является ли данный квадратный
массив симметричным относительно своей
главной диагонали. Данные записаны в
электронной таблице.
Решение.
Sub
simetria()
Const
n
= 4
Dim
i, j
Dim
x(n, n)
Dim
t, check As Boolean
For
i = 1 To n
For
j = 1 To n
x(i,
j) = Cells(i, j)
Next
Next
t = True
‘предположим, что матрица симметрична
i
= 2
While
t And (i
j
= 1
While
(j
j
= j + 1
Wend
t
= (j = i)
i
= i + 1
Wend
check
= t
MsgBox
check
End
Sub
Обработка строк
на
языкеVisual
Basic for Application
Строка
— это последовательность символов.
Строковые величины могут быть переменными
или константами. Символы, заключенные
в кавычки, являются строками.
В VBA существует
несколько функций для обработки строк.
Функция Mid
Общий вид функции Mid:
Mid(Строка,
Начальная_позиция[, Длина])
Функция Mid возвращает
вырезку из строки Строка,
начиная со позиции Начальная_позиция,
длиною Длина.
Пример
1.
Sub
пример_mid()
Dim
MyString, Word1, Word2, Word3
MyString
= «Демо
функции Mid»
Word1
= Mid(MyString, 1, 4) ‘ результат «Демо»
MsgBox
Word1
Word2
= Mid(MyString, 14, 3) ‘ результат «Mid»
MsgBox
Word2
Word3
= Mid(MyString, 6) ‘ результат «функции Mid»
MsgBox
Word3
End
Sub
Функция Len
Общий вид функции Len:
Len (Строка)
Функция Len возвращает
длину строки Строка.
Пример
2.
Sub
пример_len()
Dim
MyString
Dim Длина
MyString
= «Демо
функции Len»
Длина =
Len(MyString)
MsgBox Длина
End
Sub
Функция InStr
Общий вид функции InStr:
InStr([нач_позиция,
]Строка1, Строка2[, Опция_1_или_0])
Функция InStr номер
первого вхождения в строке Строка1 строки Строка2,
начиная с позиции Нач_позиция.
Пример
3.
Sub пример_instr()
Dim
Mystring
Mystring
= «Где Вася»
номер =
InStr(Mystring, «Вася») ‘ результат 5
MsgBox номер
End
Sub
Кроме
приведенных функций в VBA имеются: Left (вырезка
слева), Right (вырезка
справа), Trim (убирает
пробелы слева и справа), StrComp (сравнение
строк) и др.
Приведем
пример обработки строк.
Пример
4. В строке подсчитать количество цифр.
Решение.
Sub
пример_str_4()
Dim
Mystring, char
Dim
i, n
Mystring
= InputBox(«Введите
строку»)
n
= 0
For
i = 1 To Len(Mystring)
char
= Mid(Mystring, i, 1)
If
char >= «0» And char
Next
i
MsgBox
n
End
Sub
По материалам сайта
gigabaza.ru
Линейные
алгоритмы, как правило, сводятся к вводу
исходных данных, вычислениям по одной
или нескольким формулам и выводу
полученных результатов, не требуя
отдельного запоминания промежуточных
результатов (и, следовательно, использования
дополнительных переменных). Для решения
задач, описываемых такими алгоритмами,
достаточно знаний средств построения
интерфейса с пользователем, изложенных
в предыдущем разделе.
Рассмотрим
реализацию линейного алгоритма на
конкретном примере.
3.3.1. Постановка задачи
Составить
программу работы простейшего кассового
аппарата, который вычисляет стоимость
товара при задании его цены и количества.
3.3.2. Экономико-математическая
модель
Стоимость купленного
товара определятся по формуле:
Стоимость
= Цена *
Количество
3.3.3. Алгоритм решения
задачи
Алгоритм решения
задачи приведен на рис. 3.1.
3.3.4. Структура данных
При решении задачи
используются следующие данные:
Цена – дробное
число;
Количество – целое
число;
Стоимость – дробное
число.
Рис.
3.1. Алгоритм
вычисления стоимости товара
Данные
Цена и Количество являются исходными
и вводятся с клавиатуры в текстовые
поля. Поэтому в программе им присвоим
имена txtЦена
и txtКоличество
соответственно.
Результат
«Стоимость» выводится на форму. Он
зависит от исходных данных и не может
быть произвольно изменен пользователем.
Поэтому в программе он представлен
надписью с именем lblрзтСтоимость.
Структура данных
задачи представлена в табл. 3.2.
Таблица 3.2
Структура данных
Реквизит |
Имя |
Назначение |
Цена |
txtЦена |
Цена товара |
Количество |
txtКоличество |
Количество |
Стоимость |
lblрзтСтоимость |
Стоимость товара |
3.3.5. Интерфейс с пользователем
Решение задачи
производится с помощью формы, приведенной
на рис. 3.2. В заголовке формы указано
название приложения «Касса».
Рис.
3.2. Форма для
вычисления стоимости товара
На
форме слова «Цена», «Количество» и
«Стоимость» представляются надписями.
Исходные значения цены и количества
вводятся в текстовые поля. Вычисления
производятся при нажатии кнопки
«Вычислить». Результат помещается в
вогнутую область рядом с надписью
«Стоимость». Вогнутая область в форме
представляется надписью.
3.3.6. Код программы
В процедуре, которая
обрабатывает событие «Щелчок на
кнопке «Вычислить»», должен быть
только один оператор:
lbрзтlСтоимость.Caption
= txtЦена.Text * txtКоличество.Text
Поскольку
свойство Caption является свойством-значением
для надписи, а свойство Text – для текстового
поля, сами свойства указывать не
обязательно. Поэтому оператор для
вычисления стоимости можно записать в
виде:
lblрзтСтоимость =
txtЦена * txtКоличество
Процедура, которая
обрабатывает событие «Щелчок на
кнопке «Вычислить»», представлена
ниже.
PrivateSubcmdВычислить_Click()
lblрзтСтоимость =
txtЦена * txtКоличество
End Sub
3.3.7. Реализация проекта
Реализация
проекта осуществляется в такой
последовательности:
1. Загрузить
VB командой Пуск
– Программы – Microsoft Visual Studio 6.0 – Microsoft
Visual Basic 6.0.
2. Выбрать
в диалоговом окне New Project (Создание
проекта) во вкладке New тип проекта (значок
<Standard EXE>) и нажать кнопку «Открыть».
В результате появляется главное окно
VB, в рабочей области которого в окне
формы «Project1 Form1 (Form)» представлена пустая
форма «Form1».
3. Задать
имя и заголовок формы. Для этого при
выделенной форме (отображаются маркеры
по границе формы) необходимо:
3.1. Ввести значение
«Касса» в свойстве Caption (Заголовок).
3.2. Выделить
введенное значение (клавиши <Shift+Home>)
и скопировать в буфер (клавиши <Ctrl+C>).
3.3. Щелкнуть
на названии свойства Name, вставить из
буфера значение «Касса» (клавиши
<Ctrl+V>) и в начале этого слова добавить
префикс frm, т.е. свойство Name получает
значение frmКасса.
4. На
форму поместить надпись «Цена» и
соответствующее текстовое поле. Для
этого необходимо:
-
На
панели элементов управления щелкнуть
элемент Label и указать место и его размер
на форме. Аналогично создать текстовое
поле (TextBox) справа от надписи. В результате
на форме появляется подпись «Label1» и
текстовое поле «Text1».
4.2. Выделить
на форме элемент Label1 и в окне свойств в
свойстве Caption ввести значение «Цена».
4.3. Выделить
введенное значение и скопировать в
буфер.
4.4. Щелкнуть
на названии свойства Name и вставить из
буфера значение «Цена». В начале этого
слова добавить префикс lbl.
4.5. Выделить
на форме текстовое поле Text1, а в окне
свойств в свойстве Name вставить из буфера
значение «Цена». В начале этого слова
добавить префикс txt. Таким образом
свойство Name для текстового поля получает
значение txtЦена.
4.6. В
свойстве Text1 текстового поля удалить
значение «Text1», что избавит в дальнейшей
работе от необходимости каждый раз
удалять это значение перед вводом цены
(выделить значение «Text1» и нажать клавишу
<Delete>).
5. Ниже
в форме создать надпись «Количество»
и соответствующее текстовое поле подобно
тому, как это было сделано в п.4.
6. Создать командную
кнопку «Вычислить». Для этого надо:
6.1. На
панели элементов управления щелкнуть
элемент CommandButton и указать место и его
размер на форме.
6.2. В
окне свойств в свойстве Caption ввести
значение «Вычислить».
6.3. Выделить
введенное значение и скопировать в
буфер.
6.4. Щелкнуть
на имени свойства Name, вставить из буфера
название «Вычислить» и в начале
этого слова добавить префикс cmd. Таким
образом, свойство Name для командной
кнопки получает значение cmdВычислить.
7. В
нижней части формы создать две надписи:
надпись «Стоимость» и надпись, в которую
будет помещаться результат. Для этого
надо:
7.1. Создать две
надписи на одной линии.
7.2. Выделить
первую надпись, в свойство Caption ввести
значение «Стоимость», а свойству Name
задать значение lblСтоимость.
7.3. Выделить
вторую надпись, в свойство Caption ввести
значение «0» (будет выводиться в надписи
до выполнения вычислений), а в свойстве
Name задать значение lblрзтСтоимость.
В свойстве BorderStyle из раскрывающегося
списка выбрать 1-Fixed Single, что придает вид
вдавленного поля, похожего на текстовое
поле. Но оставшийся серый цвет фона
будет свидетельствовать о том, что поле
не доступно для изменений (оно содержит
результат вычислений). На этом заканчивается
создание интерфейса.
8.
Создать код процедуры, обрабатывающей
нажатие кнопки «Вычислить». Для этого:
8.1.
Дважды щелкнуть на кнопке «Вычислить».
В результате чего открывается окно
кода, в котором уже имеется заголовок
процедуры Private Sub cmdВычислить_Click() (т.е.
как раз той процедуры, которая обрабатывает
нужное событие) и окончание процедуры
End Sub.
-
В теле процедуры
ввести оператор
lblрзтСтоимость =
txtЦена * txtКоличество
Во
избежание ошибок в именах элементов
следует вводить префикс и затем нажать
комбинацию клавиш <Ctrl+J>. Из появившегося
списка выбрать нужное имя и нажать
клавишу <Tab>, чтобы вставить его в код
процедуры.
9. Сохранить форму
и проект в папке МЭО13 на диске D:.
studfiles.net
Задания по программированию в VBA
Практическая работа по информатике: Программирование в VBA
Тема 1: Вычисление значений таблично заданной функции.
Цель. Рассмотреть алгоритм решения таблично заданной функции и составить программу в VBA.
Sin(x)+lg(x) x>3.5
Y= X 2;5 ΔX=0.25
Cos2 (x) x<=3.5
Блок-схема
Мы водим в лист MS Excel начальные данные: Xmin, Xmax и h:
А |
В |
|
1 |
Xmin= |
2 |
2 |
Xmax= |
5 |
3 |
H= |
0,25 |
Создаем макрос:Сервис – Макрос – макросы. Задвем имя(решение). Вводим программу:
Sub решение()
Xmin = Cells(1, 2)
Xmax = Cells(2, 2)
h = Cells(3, 2)
For X = Xmin To Xmax Step h
If 3.5 < X Then
y = Sin(X) + Log(X)
ElseIf X <= 3.5 Then
y = (Cos(X)) ^ 2
End If
Cells(i + 2, 4) = X
Cells(i + 2, 5) = y
i = i + 1
Next X
End Sub
Запускаем программу: кнопка F5.
Сворачиваем программу и на листе MS Excel нам выдает данные:
X |
Y |
2 |
0,173178 |
2,25 |
0,394602 |
2,5 |
0,641831 |
2,75 |
0,854335 |
3 |
0,980085 |
3,25 |
0,988294 |
3,5 |
0,876951 |
3,75 |
0,750195 |
4 |
0,629492 |
4,25 |
0,55193 |
4,5 |
0,526547 |
4,75 |
0,558852 |
5 |
0,650514 |
Это и есть решение нашей функции.
Строим диаграмму:
Вывод. В ходе работы мы рассмотрели алгоритм решения таблично заданной функции(блок-схему) и составили программу в VBA.
Задача №2.
Тема: Поиск экстремумов функции.
Цель. Рассмотреть методику нахождения экстремумов функции, составить блок-схему и программу вычисления в VBA.
X3 -6×2+9x+4
Найти максимум на промежутке 0,2;1,5 с шагом 0,3. точность поиска экстремумов 10-5
Максимум функции будет, когда она начинает убывать. Если она начала убывать, то на этом промежутке находится максимальное значение У. для достижения заданной точности пользуемся правилом: если модуль(у-у1)> желаемой точности, то возвращаемся на 2 шага назад, уменьшаем шаг в 10 раз и опять повторяем до тех пор, пока условие не будет выполняться.
Блок-схема.
Мы водим в лист MS Excel начальные данные: Xmin, Xmax и h:
А |
В |
|
1 |
Xmin= |
0,2 |
2 |
Xmax= |
1,5 |
3 |
H= |
0,3 |
4 |
Eps= |
0,00001 |
Создаем макрос:Сервис – Макрос – макросы. Задаем имя(экстремуму). Вводим программу:
Sub экстремуму()
Xmin = Cells(1, 2)
Xmax = Cells(2, 2)
h = Cells(3, 2)
eps = Cells(4, 2)
For X = Xmin To Xmax Step h
Y = X ^ 3 — 6 * X ^ 2 + 9 * X + 4
Cells(i + 1, 4) = X
Cells(i + 1, 5) = Y
i = i + 1
Next X
Ymax = 0
Do
X = Xmin
Y0 = Ymax
Do
Y = X ^ 3 — 6 * X ^ 2 + 9 * X + 4
Y1 = (X + h) ^ 3 — 6 * (X + h) ^ 2 + 9 * (X + h) + 4
X = X + h
Loop While Y1 > Y
Ymax = Y
XYmax = X — h
Xmin = X — 2 * h
h = h / 10
Loop While Abs(Y — Y1) > eps
Cells(i + 2, 6) = XYmax
Cells(i + 2, 7) = Ymax
End Sub
Запускаем программу: кнопка F5.
Сворачиваем программу и на листе MS Excel нам выдает данные:
0,2 |
5,568 |
||
0,5 |
7,125 |
||
0,8 |
7,872 |
||
1,1 |
7,971 |
||
1,4 |
7,584 |
||
0,75 |
7,796875 |
||
1,05 |
7,992625 |
||
1,2 |
7,888 |
||
1,35 |
7,675375 |
||
1,5 |
7,375 |
||
1,00005 |
8 |
Вывод. В ходе работы мы рассмотрели методику нахождения экстремума функции, составили блок-схему и программу вычисления в VBA.
Задача 3.
Тема 3: Решение нелинейных уравнений.
Цель. Рассмотреть методы решения нелинейных уравнений : метод деления отрезка пополам. Составить алгоритм решения и реализовать программы в VBA.
0.8×4-2×2
Интервал 1;2 . точность 10-5
1) Метод деления отрезка пополам.
Делим отрезок пополам:
X=(a+b)/2
Определяют знак функции f(x) и выбирают ту половину отрезка, на концах которого функция принимает значение разных знаков и деление повторяется.
Если нужно найти корень с заданной точностью, то деление повторяют, пока разность между предыдущем значением корня и вновь посчитанным не станет меньше заданной точности.
Блок-схема.
Мы водим в лист MS Excel начальные данные: a, b,f(x), eps:
А |
В |
|
1 |
a= |
1 |
2 |
b= |
2 |
3 |
Eps= |
0,00001 |
4 |
Создаем макрос: Сервис – Макрос – макросы. Задаем имя(нелинейное). Вводим программу:
Sub нелинейное()
a = Cells(1, 2)
b = Cells(2, 2)
eps = Cells(3, 2)
X = 0
Do
X0 = X
X = (a + b) / 2
If f(a) * f(X) > 0 Then
a = X
Else
b = X
End If
Cells(i + 3, 4) = X
Cells(i + 3, 5) = f(X)
i = i + 1
Loop While Abs(X — X0) > eps
End Sub
Function f(X)
f = 0.8 * X ^ 4 — 2 * X ^ 2
End Function
Запускаем программу: кнопка F5.
Сворачиваем программу и на листе MS Excel нам выдает данные:
X |
f(x) |
1,5 |
-0,45 |
1,75 |
1,378125 |
1,625 |
0,29707 |
1,5625 |
-0,11444 |
1,59375 |
0,081361 |
1,578125 |
-0,01897 |
1,585938 |
0,03058 |
1,582031 |
0,005652 |
1,580078 |
-0,0067 |
1,581055 |
-0,00053 |
1,581543 |
0,002558 |
1,581299 |
0,001012 |
1,581177 |
0,00024 |
1,581116 |
-0,00015 |
1,581146 |
4,69E-05 |
1,581131 |
-5E-05 |
1,581139 |
-1,4E-06 |
2)Метод хорд.
Основан на предположении, что на маленьком отрезке функция изменяется линейно. Тогда кривую можно заменить хордой и в качестве приближенного значения принять точку пересечения хорды с осью абсцисс. Точка Х находиться по формуле Х=a-((b-a)*f(a))/(f(b)-f(a)). Определяют знак функции f(x) и выбирают ту половину отрезка, на концах которого функция принимает значение разных знаков и деление повторяется.
Если нужно найти корень с заданной точностью, то деление повторяют, пока разность между предыдущем значением корня и вновь посчитанным не станет меньше заданной точности.
Эти два метода очень похожи и различаются только способом нахождения Х. все остальное то же самое.
Мы водим в лист MS Excel начальные данные: a, b,f(x), eps:
А |
В |
|
1 |
a= |
1 |
2 |
b= |
2 |
3 |
Eps= |
0,00001 |
4 |
Создаем макрос: Сервис – Макрос – макросы. Задаем имя(нелинейное). Вводим программу:
Sub нелинейное()
a = Cells(1, 2)
b = Cells(2, 2)
eps = Cells(3, 2)
X = 0
Do
X0 = X
X = a — ((b — a) * f(a)) / (f(b) — f(a))
If f(a) * f(X) > 0 Then
a = X
Else
b = X
End If
Cells(i + 3, 4) = X
Cells(i + 3, 5) = f(X)
i = i + 1
Loop While Abs(X — X0) > eps
End Sub
Function f(X)
f = 0.8 * X ^ 4 — 2 * X ^ 2
End Function
Вывод. В ходе работы мы рассмотрели методы решения нелинейных уравнений: метод деления отрезка пополам и метод хорд. Составили алгоритм решения и реализовали программу в VBA.
zadachi-ru.com.ua
Решение задач в Visual Basic, решение задач в вижуал бейсике. Решение задач в visual basic онлайн
- Проблемы с написанием программ на Visual Basic (Вижуал Бейсик)?
- Скоро экзамен и для допуска нужно сдать море лабораторных работ по программированию?
- Не понимаете материал, а на разборы нет времени?
Решение всех проблем — это агентство Neudoff.net!
О нас
Агентство Neudoff.net работает на рынке образовательных услуг уже не протяжении многих лет. Мы помогаем студентам и школьникам, столкнувшимся с проблемами в учебе, в частности трудностями с программированием. Написание программ на языке Visual Basic (Вижуал Бейсик) – это наша работа!
У нас работают только первоклассные специалисты. Каждый из них имеет высшее образование и огромный опыт работы.
Наши возможности
Язык Visual Basic (Вижуал Бейсик) часто изучается в курсе информатики, как пример языка поддерживающего объектно-ориентированное программирование.
На счету наших сотрудников множество качественно выполненных лабораторных работ по Visual Basic (Вижуал Бейсику). Все клиенты остались довольны!
Чтобы примкнуть к их числу, вам достаточно сделать заказ!
Мы так же предоставляем услуги по онлайн решению на зачетах или экзаменах.
Как заказать работу?
Чтобы заказать решение задачи, лабораторной или контрольной работы по Visual Basic (Вижуал Бейсик) вам нужно воспользоваться специальной «Формой отправки заказа». Она проста и удобна в использовании. С ее помощью вы быстро и без проблем сможете прислать нам задания для решения, указать сроки выполнения и иную важную информацию.
Кроме того, вы можете просто связаться с нами любым удобным для вас способом и прислать задания. Способов связи достаточно!
Мы принимаем заказы круглосуточно!
Наши гарантии
Где гарантия того что работы будет выполнена правильно и в срок? Такой вопрос закономерно может возникнуть, если вы заказываете у нас выполнение контрольных или задач по Visual Basic впервые.
Neudoff.net очень дорожит своей репутацией и мы стремимся чтобы каждый клиент остался доволен. Качественное предоставление услуг наш приоритет!
Но для проверки вы можете заказать у нас написание только одной или двух программ. После получения результата, если вас все устроило, вы смело можете прислать нам остаток заданий. Мы всегда сможем договориться!
Наши бонусы и скидки
Для постоянных клиентов, а таких у нас не мало, мы предлагаем систему скидок на новые заказы. Больше заказов — больше скидка.
Остались вопросы? Что-то стало не понятно? Спросите! Напишите нам и задайте все интересующие вас вопросы.
neudoff.net
Вариант № 1 — Задачи по Visual Basic
Задачи по Visual Basic
скачать (186 kb.)
Доступные файлы (15):
содержание
Лабораторные работы.doc
Реклама MarketGid:
Вариант № 1
Задача № 1
- Постановка задачи: Составить программу нахождения площади прямоугольника со сторонами Х и У.
- Интерфейс задачи:
- Листинг программы:
Dim x As Integer, y As Integer, z As Integer
Private Sub Command1_Click()
Text3.Text = Text1 + Text2.Text
x = Text1.Text
y = Text2.Text
z = x * y: Text3.Text = z
End Sub
Private Sub Command2_Click()
Form1.Hide: Form2.Show
End Sub
Задача № 2
- Постановка задачи: Составить программу перевода строки в нижний регистр.
- Интерфейс задачи:
- Листинг программы:
Dim x As String, y As String
Private Sub Command1_Click()
x = Text1.Text
y = LCase(x): Text2.Text = y
End Sub
Private Sub Command2_Click()
Form2.Hide: Form3.Show
End Sub
Private Sub Command3_Click()
Form2.Hide: Form1.Show
End Sub
Задача № 3
- Постановка задачи: Составить программу перевода температуры из шкалы Фаренгейта в шкалу Цельсия (0 F соответствует -17,8, а 0 C соответствует+32 F ).
- Интерфейс задачи:
- Листинг программы:
Dim x As Variant, y As Variant
Private Sub Command1_Click()
x = Text1.Text
y = (5 * (32 — x) / 9): Text2.Text = y
End Sub
Private Sub Command2_Click()
Form3.Hide: Form4.Show
End Sub
Private Sub Command3_Click()
Form3.Hide: Form2.Show
End Sub
Задача № 4
- Постановка задачи: Составить программу определения, в норме ли вес обследуемого пациента (нормой считается вес, равный (рост(см)-100)5кг).
- Интерфейс задачи:
- Листинг программы:
Dim x As Integer, y As Integer
Private Sub Command1_Click()
x = Text1.Text
y = Text2.Text
If (y < (x — 100) — 5) Or (y > (x — 100) + 5) Then MsgBox «Вес не в норме» Else MsgBox «Вес в норме»
End Sub
Private Sub Command2_Click()
Form4.Hide: Form5.Show
End Sub
Private Sub Command3_Click()
Form4.Hide: Form3.Show
End Sub
Задача № 5
- Постановка задачи: Составить программу, определяющую сколько раз встречается заданное число (вводится с клавиатуры) в диапазоне от 10 до 352.
- Интерфейс задачи:
- Листинг программы:
Dim x As String, s As Integer
Private Sub Command1_Click()
x = Text1.Text
k = Len(x)
Select Case k
Case 1
s = 0
For i = 10 To 352
n = Len(i)
For j = 1 To n
For y = 1 To k
If Mid(x, y, 1) = Mid(i, j, k) Then s = s + 1
Next y
Next j
Next i
Case 2
s = 0
For i = 10 To 352
For j = 1 To k
If x = Mid(i, j, 2) Then s = s + 1
Next j
Next i
Case 3
s = 0
For i = 10 To 352
For j = 1 To k
If x = Mid(i, j, 3) Then s = s + 1
Next j
Next i
End Select
Text2.Text = s
End Sub
Private Sub Command2_Click()
Form5.Hide: Form6.Show
End Sub
Private Sub Command3_Click()
Form5.Hide: Form4.Show
End Sub
Задача № 6
- Постановка задачи: Составить программу нахождения суммы минимального и максимального в массиве из 20 чисел.
- Интерфейс задачи:
- Листинг программы:
Private Sub Command1_Click()
Dim x(19) As Integer
For y = 0 To 19
x(y) = MSFlexGrid1.TextMatrix(y, 0)
Next y
Dim max As Integer
Dim min As Integer
max = x(0)
min = x(0)
For i = 1 To 19
If max < x(i) Then
max = x(i)
End If
If min > x(i) Then
min = x(i)
End If
Next i
Text2.Text = min
Text3.Text = max
Text1.Text = max + min
End Sub
Private Sub Command2_Click()
Form6.Hide: Form5.Show
End Sub
Private Sub Command3_Click()
Form7.Show: Form6.Hide
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
Case 45
If Mid(MSFlexGrid1.Text, 1, 1) = «-» Then
MSFlexGrid1.Text = Mid(MSFlexGrid1.Text, 2, Len(MSFlexGrid1.Text) — 1)
Else
MSFlexGrid1.Text = «-» & MSFlexGrid1.Text
End If
End Select
End Sub
Задача № 7
- Постановка задачи: Составить программу определения средней оценки списка студентов по трём предметам.
- Интерфейс задачи:
- Листинг программы:
Private Sub Command1_Click()
Dim a(6, 5) As Variant
Dim s(1 To 5) As Variant
For k = 1 To 5
s(k) = 0
For i = 1 To 3
s(k) = s(k) + MSFlexGrid1.TextMatrix(k, i)
Next i
MSFlexGrid1.TextMatrix(k, 4) = s(k) / 3
Next k
End Sub
Private Sub Command2_Click()
Form7.Hide: Form6.Show
End Sub
Private Sub Command3_Click()
Form7.Hide: Form8.Show
End Sub
Private Sub Form_Load()
MSFlexGrid1.TextMatrix(0, 1) = «Матем.»
MSFlexGrid1.TextMatrix(0, 2) = «Физика»
MSFlexGrid1.TextMatrix(0, 3) = «Информ.»
MSFlexGrid1.TextMatrix(0, 4) = «Ср.оценка»
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 0 To 255
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End Select
End Sub
Задача № 8
- Постановка задачи: Решить задание № 7 и отсортировать список по возрастанию средней оценки.
- Интерфейс задачи:
До сортировки:
После сортировки:
- Листинг программы:
Dim a(6, 5) As Variant
Dim x As Variant
Private Sub Command1_Click()
Dim s(1 To 5) As Variant
Dim tmp As Variant
For k = 1 To 5
s(k) = 0
For i = 1 To 3
s(k) = s(k) + MSFlexGrid1.TextMatrix(k, i)
Next i
MSFlexGrid1.TextMatrix(k, 4) = s(k) / 3
Next k
End Sub
Private Sub Command2_Click()
Form8.Hide: Form7.Show
End Sub
Private Sub Command3_Click()
Form8.Hide: Form9.Show
End Sub
Private Sub Command4_Click()
x = 4
For j = 1 To MSFlexGrid1.Rows — 1
For i = j To MSFlexGrid1.Rows — 1
If MSFlexGrid1.TextMatrix(j, x) > MSFlexGrid1.TextMatrix(i, x) Then
For k = 0 To MSFlexGrid1.Cols — 1
tmp = MSFlexGrid1.TextMatrix(j, k)
MSFlexGrid1.TextMatrix(j, k) = MSFlexGrid1.TextMatrix(i, k)
MSFlexGrid1.TextMatrix(i, k) = tmp
Next k
End If
Next i
Next j
End Sub
Private Sub Form_Load()
MSFlexGrid1.TextMatrix(0, 1) = «Матем.»
MSFlexGrid1.TextMatrix(0, 2) = «Физика»
MSFlexGrid1.TextMatrix(0, 3) = «Информ.»
MSFlexGrid1.TextMatrix(0, 4) = «Ср.оценка»
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 0 To 255
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End Select
End Sub
Private Sub MSFlexGrid2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 0 To 255
MSFlexGrid2.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End Select
End Sub
Задача № 9
(Функция)
- Постановка задачи: Решить задание № 8 с использованием подпрограмм.
- Интерфейс задачи:
До сортировки
После сортировки
- Листинг программы:
Private Sub Command1_Click()
Dim a(6, 5) As Variant
Dim s(1 To 5) As Variant
Dim tmp As Variant
For k = 1 To 5
s(k) = 0
For i = 1 To 3
s(k) = s(k) + MSFlexGrid1.TextMatrix(k, i)
Next i
MSFlexGrid1.TextMatrix(k, 4) = s(k) / 3
Next k
End Sub
Private Sub Command2_Click()
Form9.Hide: Form8.Show
End Sub
Private Sub Command3_Click()
Form9.Hide: Form11.Show
End Sub
Public Sub Command4_Click()
w = Sort(MSFlexGrid1, 4)
End Sub
Private Sub Form_Load()
MSFlexGrid1.TextMatrix(0, 1) = «Матем.»
MSFlexGrid1.TextMatrix(0, 2) = «Физика»
MSFlexGrid1.TextMatrix(0, 3) = «Информ.»
MSFlexGrid1.TextMatrix(0, 4) = «Ср.оценка»
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 0 To 255
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End Select
End Sub
(Процедура)
- Постановка задачи: Решить задание № 8 с использованием подпрограмм.
- Интерфейс задачи:
До сортировки
После сортировки
- Листинг программы:
Private Sub Command1_Click()
Dim a(6, 5) As Variant
Dim s(1 To 5) As Variant
Dim tmp As Variant
For k = 1 To 5
s(k) = 0
For i = 1 To 3
s(k) = s(k) + MSFlexGrid1.TextMatrix(k, i)
Next i
MSFlexGrid1.TextMatrix(k, 4) = s(k) / 3
Next k
End Sub
Private Sub Command2_Click()
Form11.Hide: Form9.Show
End Sub
Private Sub Command3_Click()
Form11.Hide: Form10.Show
End Sub
Public Sub Command4_Click()
Sortirovka MSFlexGrid1, 4
End Sub
Private Sub Form_Load()
MSFlexGrid1.TextMatrix(0, 1) = «Матем.»
MSFlexGrid1.TextMatrix(0, 2) = «Физика»
MSFlexGrid1.TextMatrix(0, 3) = «Информ.»
MSFlexGrid1.TextMatrix(0, 4) = «Ср.оценка»
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 0 To 255
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End Select
End Sub
Модуль1.
Public Function Sort(w As Object, x As Long) As Long
For j = 1 To w.Rows — 1
For i = j To w.Rows — 1
If CInt(w.TextMatrix(j, x)) > CInt(w.TextMatrix(i, x)) Then
For k = 0 To w.Cols — 1
tmp = w.TextMatrix(j, k)
w.TextMatrix(j, k) = w.TextMatrix(i, k)
w.TextMatrix(i, k) = tmp
Next k
End If
Next i
Next j
Exit Function
End Function
Public Sub Sortirovka(w As Object, x As Long)
For j = 1 To w.Rows — 1
For i = j To w.Rows — 1
If CInt(w.TextMatrix(j, x)) > CInt(w.TextMatrix(i, x)) Then
For k = 0 To w.Cols — 1
tmp = w.TextMatrix(j, k)
w.TextMatrix(j, k) = w.TextMatrix(i, k)
w.TextMatrix(i, k) = tmp
Next k
End If
Next i
Next j
Exit Sub
End Sub
Задача № 10
- Постановка задачи: Составить программу рисования цифр 0-9 в псевдографике. Полученный рисунок сохранить в файл.
- Интерфейс задачи:
- Листинг программы:
Dim n As Integer
Private Sub Command1_Click()
Text1.Text = » 000 » & vbCrLf & » 0 0 » & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0″ & vbCrLf & » 0 0 » & vbCrLf & » 000 «
End Sub
Private Sub Command10_Click()
Text1.Text = » 000 » & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0 » & vbCrLf & » 000 » & vbCrLf & » 0″ & vbCrLf & » 0″ & vbCrLf & «0 0» & vbCrLf & «0 0 » & vbCrLf & » 000 «
End Sub
Private Sub Command11_Click()
Dim Name As String
Dim k As String
k = Text1.Text
n = FreeFile
CommonDialog1.ShowSave
Name = CommonDialog1.FileName
If Name = «» Then MsgBox «íå ââåäåíî çíà÷åíèå»
If Name <> «» Then
Open Name For Output As n
Do Until EOF(n)
Line Input #n, k
Loop
Close
End If
CommonDialog1.FileName = «»
End Sub
Private Sub Command13_Click()
Form10.Hide: Form11.Show
End Sub
Private Sub Command2_Click()
Text1.Text = » 0 » & vbCrLf & » 00 » & vbCrLf & » 0 0 » & vbCrLf & «0 0 » & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0000 «
End Sub
Private Sub Command4_Click()
Text1.Text = » 000 » & vbCrLf & «0 0» & vbCrLf & «0 0″ & vbCrLf & » 0 » & vbCrLf & » 00 » & vbCrLf & » 0 » & vbCrLf & » 0″ & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0 » & vbCrLf & » 000 «
End Sub
Private Sub Command3_Click()
Text1.Text = » 000 » & vbCrLf & «0 0» & vbCrLf & «0 0″ & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & «0 » & vbCrLf & «00000»
End Sub
Private Sub Command5_Click()
Text1.Text = » 0 » & vbCrLf & » 00 » & vbCrLf & » 0 0 » & vbCrLf & «0 0 » & vbCrLf & «00000» & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 «
End Sub
Private Sub Command6_Click()
Text1.Text = «00000» & vbCrLf & «0 » & vbCrLf & «0 00 » & vbCrLf & «00 0 » & vbCrLf & «0 0″ & vbCrLf & » 0″ & vbCrLf & » 0″ & vbCrLf & «0 0» & vbCrLf & «0 0 » & vbCrLf & » 000 «
End Sub
Private Sub Command7_Click()
Text1.Text = » 0000 » & vbCrLf & «0 0» & vbCrLf & «0 » & vbCrLf & «0000 » & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0 » & vbCrLf & » 000 «
End Sub
Private Sub Command8_Click()
Text1.Text = «0000000» & vbCrLf & » 0″ & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 » & vbCrLf & » 0 «
End Sub
Private Sub Command9_Click()
Text1.Text = » 000 » & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0 » & vbCrLf & » 00 » & vbCrLf & «0 0 » & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0» & vbCrLf & «0 0 » & vbCrLf & » 000 «
End Sub
^
Выполнил: студент II курса
факультета МФИ
(прикладная информатика)
Принял преподаватель:
Тихвин 2007г.
Скачать файл (186 kb.)
gendocs.ru
Задачи по Visual Basic [DOC]
Электронное учебное пособие «VBA. Решение задач» — учебник по VBA с примерами. По этому учебнику легко научиться программировать на Visual Basic, так как написан очень доходчиво. Есть описание работы с компилятором Visual Basic 6, который встроен в продукты Microsoft (Excel, Word и Access).
- 5,11 МБ
- дата добавления неизвестна
- изменен 24.06.2018 13:39
Методические указания содержат краткие теоретические сведения, задания, примеры и рекомендации для выполнения лабораторных работ на языке Visual Basic
6.0. Предназначены для студентов дневной формы обучения для всех специальностей по дисциплине Информатика.
- 298,56 КБ
- дата добавления неизвестна
- изменен 17.06.2010 20:19
Архив содержит большое количество задач, решённых на языке QBasic. Представлены как задачи из школьной программы, так и олимпиадные задачи на разные темы.
- 787,66 КБ
- дата добавления неизвестна
- изменен 26.07.2009 21:39
Общие сведения о Visual Basic.
Лабораторная работа № 1 Изучение интегрированной среды и основ работы в Visual Basic.
Лабораторная работа № 2 Организация ввода-вывода данных, изменение свойств объектов, разработка приложений с линейными алгоритмами.
Лабораторная работа № 3 Разработка приложений с разветвляющимися алгоритмами.
Лабораторная работа № 4 Разработка приложений с…
- 2,25 МБ
- дата добавления неизвестна
- изменен 06.05.2009 18:25
Собрано 18 сделаных и провереных лабораторных работ по Visual Basic. Простая форма, MDI-форма, циклы, массивы, сетка, графики, диаграммы, дополнительные элементы управления, анимация, работа с файлами.
- 30,56 КБ
- дата добавления неизвестна
- изменен 07.12.2008 01:06
Сюда входят различные учебники по VISIAL BASIC
6.0. :
Коннэлл Visual Basic 6 Введение в программирование баз данных,Visual Basic. Освой на примерах, Пособие-самоучитель on-line «Visual Basic с нуля», Встроенные функции Visual Basic, Электронный лабораторный практикум по VISIAL BASIC.
- 27,92 МБ
- дата добавления неизвестна
- изменен 16.12.2015 04:40
www.twirpx.com
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «Тихоокеанский государственный университет»
Программирование на VBA в MS Excel
Методические указания к выполнению лабораторных работ № 1–4 по информатике
для студентов дневной формы обучения
Хабаровск Издательство ТОГУ
2010
УДК 511.3
Программирование на VBA в MS Excel : методические указания к выполнению лабораторных работ № 1–4 по информатике для студентов дневной формы обучения / cост. Н. О. Бегункова, Н. Д. Белова, Т. А. Бочарова. – Хабаровск : Изд-во Тихоокеан. гос. ун-та, 2010. – 44 с.
Методические указания составлены на кафедре «Информатика». Включают 4 лабораторные работы, содержащие задания на создание макросов в MS Excel и простых проектов в среде программирования VBA с использованием пользовательских форм. Каждая лабораторная работа содержит основные сведения, примеры, снабженные комментариями, варианты индивидуальных заданий.
Печатается в соответствии с решениями кафедры «Информатика» и методического совета факультета математического моделирования и процессов управления.
© Тихоокеанский государственный университет, 2010
ОБЩИЕ СВЕДЕНИЯ
ПО VISUAL BASIC FOR APPLICATIONS В MS EXCEL
При работе с приложениями Microsoft Office часто возникает задача их автоматизации. Одним из ее решений является использование VBA.
VBA (Visual Basic for Applications) – это язык программирования, поддер-
живаемый всеми приложениями пакета Microsoft Office, в том числе VBA является основным средством разработки в MS Excel.
VBA относительно прост и удобен в освоении и позволяет быстро получить ощутимые результаты – конструировать профессиональные приложения для решения практически любых задач в среде Microsoft Windows.
VBA относится к языкам объектно-ориентированного программирования. Каждое приложение Microsoft Office имеет свой уникальный набор объектов с их собственными свойствами и методами.
MS Excel имеет более 100 объектов, среди которых чаще всего используют-
ся следующие: Application (Приложение); Workbook (Рабочая книга); WorkSheet (Рабочий лист); Range (Диапазон ячеек); UserForm (Пользовательская форма).
Интегрированная среда разработки VBA представлена приложением, называемым редактор Visual Basic. Редактор VB активизируется командой Сервис → Макрос → Редактор Visual Basic или нажатием комбинации клавиш
Alt + F11.
Окно редактора VB включает следующие основные компоненты (рис. 1): строка меню, панель инструментов, окно проекта, окно свойств, окно редактирования кода, окно конструктора форм.
Программа не является самостоятельным структурным элементом в иерархии объектов языка VBA, поэтому редактор VB распознает по именам не про-
граммы, а процедуры, модули и проекты:
•процедура – отдельная единица программного кода VBA, которую можно вызвать по имени для выполнения, либо она может выполняться самостоятельно. Любая процедура содержит один или несколько операторов;
•модуль – именованная единица, состоящая из одной или нескольких процедур или раздела объявления, в котором объявляются переменные, константы, пользовательские типы данных, а также устанавливаются параметры компилятора;
•проект включает в себя все модули, формы и связанные с приложением объекты, относящиеся к конкретной рабочей книге, причем проект сохраняется вместе с самой книгой.
Наименьшей единицей VBA-кода является оператор. Он предназначен для определения переменной, установки параметров или выполнения какого-либо действия в программе.
3
Рис. 1. Окно редактора VB
Для выполнения программного кода в редакторе VB используется команда
Run → Run Sub / UserForm, либо кнопка «Run Sub / UserForm» на панели ин-
струментов, либо функциональная клавиша F5.
Кроме того, для правильной работы рабочих книг, содержащих разработанные пользователем программы на VBA, необходимо изменить уровень безопасности на «Средний», воспользовавшись командой Сервис → Макрос → Безопасность.
4
СОЗДАНИЕ И ВЫПОЛНЕНИЕ МАКРОСОВ
Основные сведения
Макрос – это записанная последовательность заданных пользователем команд и действий, хранящаяся в форме программы на языке VBA и сохранённая под уникальным именем, которую может выполнить Excel.
При записи макроса запоминаются все действия пользователя, будь то нажатие клавиши или выбор определенной команды меню, которые автоматически преобразуются в программный код на языке VBA.
Пример 1
Создадим простой макрос, который изменяет шрифт, цвет заливки и направление текста в ячейке. Для этого выполним следующие действия:
1.Откроем новую книгу в MS Excel.
2.В ячейку А1 введем название института, в котором вы учитесь, а в ячейку В1 – название группы.
3.Установим курсор в ячейке А1.
4.Нажмем кнопку «Записать макрос» на панели Visual Basic (Вид → Пане-
ли инструментов → Visual Basic) или воспользуемся командой меню Сер-
вис → Макрос → Начать запись.
5.В диалоговом окне Запись макроса (рис. 2) введем имя макроса «Оформление_Ячейки» (имя макроса должно начинаться с буквы и может содержать до 255 символов: буквы, цифры и знаки подчёркивания, а пробелы не допускаются) и сочетание клавиш для дальнейшего
вызова макроса – Ctrl+о, выберем место сохранения – «Эта книга» и
нажмем кнопку «ОК». |
Рис. 2. Диалоговое окно Запись макроса |
6.Выполним команду Формат → Ячейки. В диалоговом окне Формат ячеек перейдем на вкладку Шрифт и
установим название шрифта Times New Roman, размер – 18 пунктов, начертание – «полужирный».
7.Перейдем на вкладку Вид и выберем цвет заливки ячейки – зеленый.
8.Далее активизируем вкладку Выравнивание и ориентацию текста изменим на 90 градусов.
9.Нажмем кнопку «ОК».
5
10.Нажмем кнопку «Остановить запись» или выполним команду Сервис → Макрос → Остановить запись.
Теперь воспользуемся созданным нами макросом для изменения формата ячейки В1:
1.Активизируем ячейку В1.
2.Воспользуемся комбинацией клавиш Ctrl+о либо выполним команду Сервис → Макрос → Макросы и, выбрав в появившемся диалоговом окне
макрос |
«Оформление_Ячейки» |
||
(рис. 3), нажмем кнопку «Выпол- |
|||
нить». |
|||
Чтобы просмотреть полученный |
|||
при записи макроса код или, если не- |
|||
обходимо, отредактировать его, не- |
|||
обходимо выполнить следующие дей- |
|||
ствия: |
|||
1. Открыть |
диалоговое |
окно |
|
Макрос (рис. 3) через команду |
|||
Сервис → Макрос → Макросы. |
Рис. 3. Диалоговое окно Макрос |
2.Выделить имя нужного макроса и
нажать кнопку «Изменить». Откроется окно редактора VB (рис. 4). Отредактируем код созданного в примере 1 макроса, изменив начертание
шрифта (FontStyle) на «курсив» и цвет заливки ячейки на синий (ColorIndex =5). Текст кода макроса примет вид:
Sub Оформление_Ячейки()
‘
‘Оформление_Ячейки Макрос
‘Макрос записан 10.05.2009 (Natalya)
‘Сочетание клавиш: Ctrl+о
‘
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With
With Selection.Font
.Name = «Times New Roman»
.FontStyle = «курсив»
.Size = 18
6
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic End With
With Selection.Interior
.ColorIndex = 5
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic End With
End Sub
Рис. 4. Окно редактора VB
Применим отредактированный нами макрос к ячейке В1.
Существуют несколько способов запуска макроса на выполнение:
СпособU 1.U Запуск макроса через команду Сервис → Макрос → Макросы.
СпособU 2.U Назначение комбинации клавиш для вызова макроса. СпособU 3.U Назначение макроса командной кнопке.
Для того чтобы создать командную кнопку, с помощью которой будет выполняться макрос, необходимо:
7
1.Открыть панель инструментов Форма через меню Вид → Панели инст-
рументов → Формы (рис. 5).
2.Нажав на инструмент Кнопка панели инструментов Формы, поместить указатель мыши в то место, где будет располагаться командная кнопка, и, не отпуская левую кнопку мыши, придать кнопке нужный размер.
3.В появившемся диалоговом окне
Назначить макрос объекту (рис. 6)
выбрать нужный макрос и нажать кнопку «ОК».
4. Выделить |
надпись |
Кнопка1 на |
Рис. 5. Панель инструментов Формы |
|
командной |
кнопке |
и |
ввести |
|
соответствующее название для |
||||
данной кнопки. |
5.Щёлкнуть вне кнопки, чтобы
снять с неё выделение. |
|||
СпособU |
4 |
||
Назначение макроса графиче- |
|||
скому изображению. |
|||
Назначить макрос графиче- |
|||
скому изображению можно сле- |
|||
дующим образом: |
|||
1. Используя панель Рисование, |
|||
нарисовать на листе автофи- |
|||
гуру или выбрать изображение |
Рис. 6. Окно Назначить макрос объекту |
||
для вставки на рабочий лист. |
2.Придать полученному изображению соответствующие размеры.
3.Нажав на изображении правую кнопку мыши, в открывшемся контекстном меню выбрать команду Назначить макрос.
4.В появившемся диалоговом окне Назначить макрос объекту выбрать нужный макрос и нажать кнопку «ОК».
5.Щёлкнуть вне графического изображения, чтобы снять с него выделение. СпособU 5
Назначение макроса кнопке на панели инструментов
Чтобы воспользоваться возможностью назначить макрос кнопке на панели инструментов, необходимы следующие действия:
8
Запускает макрос «Оформление_Ячейки»
Рис. 8. Назначение макроса объектам
«Налог», «К выдаче», а второй –
1.Выполнить команду Сервис → Настройка.
2.В диалоговом окне Настройка перейти на вкладку Команды и в списке Категории выбрать
Макросы, а в списке Команды – Настраиваемая кнопка (рис. 7).
3.Перенести команду Настраиваемая кнопка на какую-либо панель инструментов.
4.Нажав правой кнопкой мыши на вновь добавленную кнопку, в появившемся контекстном меню вы-
брать пункт Выбрать значок для
кнопки и в открывшемся списке Рис. 7. Диалоговое окно Настройка значков указать любой из них.
5.Снова открыв то же контекстное меню, выбрать пункт Назначить макрос.
6.В открывшемся диалоговом окне Назначить макрос выделить нужный макрос и нажать кнопку «ОК».
7.Закрыть диалоговое окно Настройка.
Для примера назначим макрос «Оформление_Ячейки» из примера 1 командной кнопке, графическому изображению и кнопке на панели инструментов (рис. 8). Нажав кнопкой на данные объ-
екты, мы выполним созданный макрос.
Пример 2
Разработаем в Excel таблицу расчета заработной платы (ФИО, начислено, налог, к выдаче) и создадим два макроса.
Первый макрос будет отвечать за расчет значений в графах «Налог» и «К выдаче», а также итоговых сумм по полям «Начислено», за оформление таблицы.
Для решения поставленной задачи выполним следующие действия:
1.Откроем новую книгу Excel и сформируем таблицу, заполнив шапку таблицы и поля «ФИО» и «Начислено» данными (рис. 9).
2.Создадим первый макрос, который будет вычислять значения в графах «Начислено», «Налог» и «К выдаче». Для чего, предварительно сделав активной ячейку С2, нажмем кнопку «Записать макрос» на панели инстру-
9
ментов Visual Basic, зададим имя макроса «Расчет_зарплаты» и выполним следующую последовательность действий:
•в ячейку С2 введем формулу «=B2*$C$8», а в ячейку D2 – формулу
«=B2-C2»;
•выделим диапазон ячеек (С2:D2) и, используя маркер заполнения, скопируем их в четыре нижние ячейки;
•в ячейку В7 введем фор-
мулу «=СУММ(B2:B6)» и
скопируем ее в ячейки Рис. 9. Таблица с исходными данными
С7 и D7;
• остановим запись макроса. Код макроса представлен ниже:
Sub Расчет_зарплаты()
‘
‘Расчет_зарплаты Макрос
‘Макрос записан 10.05.2009 (Natalya)
ActiveCell.FormulaR1C1 = «=RC[-1]*R8C3» Range(«D2»).Select
ActiveCell.FormulaR1C1 = «=RC[-2]-RC[-1]» Range(«C2:D2»).Select
Selection.AutoFill Destination:=Range(«C2:D6»), Type:=xlFillDefault Range(«C2:D6»).Select
Range(«B7»).Select
ActiveCell.FormulaR1C1 = «=SUM(R[-5]C:R[-1]C)»
Selection.AutoFill Destination:=Range(«B7:D7»), Type:=xlFillDefault Range(«B7:D7»).Select
Range(«D8»).Select End Sub
3.Создадим второй макрос, который будет отвечать за оформление таблицы. Для этого, предварительно сделав активной ячейку А1, нажмем кнопку «Записать макрос», зададим имя макроса «Формат_таблицы» и выполним следующую последовательность действий:
•выделим диапазон ячеек (А1:D1) и через Формат → Ячейки в диалоговом окне на вкладке Шрифт выберем начертание – «полужирный», а на вкладке Выравнивание в категории «Выравнивание по горизонтали» – «по центру»;
10
•для ячейки А7 на вкладке Шрифт диалогового окна Формат ячеек выберем начертание – «полужирный»;
•выделим диапазон ячеек (А2:А8) и через Формат → Ячейки в диалоговом окне на вкладке Выравнивание в категории «Выравнивание по горизонтали» выберем – «по левому краю», в категории «Выравнивание по вертикали» – «по центру», а в категории «Отображение» установим флажок «переносить по словам»;
•выделим диапазон ячеек (В2:D7) и через Формат → Ячейки в диалоговом окне на вкладке Выравнивание в категории «Выравнивание по горизонтали» выберем – «по правому краю», а на вкладке Число – денежный формат с двумя десятичными знаками;
•выполним те же действия с ячейкой С8, только укажем процентный формат числа;
•выделим диапазон ячеек (А1:D8) и на вкладке Граница диалогового окна Формат ячеек включим внешние и внутренние границы;
•если необходимо, изменим ширину столбцов.
Код макроса представлен ниже:
Sub Формат_таблицы()
‘
‘Формат_таблицы Макрос
‘Макрос записан 10.05.2009 (Natalya)
Range(«A1:D1»).Select With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With
With Selection.Font
.Name = «Arial Cyr»
.FontStyle = «полужирный»
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic End With
Range(«A7»).Select With Selection.Font
11
.Name = «Arial Cyr»
.FontStyle = «полужирный»
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic End With Range(«A2:A8»).Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With Range(«B2:D7»).Select
Selection.NumberFormat = «#,##0.00$» With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With Range(«C8»).Select
Selection.NumberFormat = «0.00%» With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With Range(«A1:D8»).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
12
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
Range(«D8»).Select End Sub
4.Для создания командной кнопки воспользуемся инструментом Кнопка панели инструментов Формы, а в появившемся диалоговом окне Назначить макрос объекту выберем макрос «Расчет_зарплаты», надпись на кнопке изменим на «Рассчитать».
5.Для создания кнопки на панели инструментов воспользуемся командой Сервис → Настройка и назначим макрос «Формат_таблицы» выбранной кнопке.
Изменим макрос «Формат_таблицы» так, чтобы к ячейкам шапки таблицы применялся шрифт «Courier New» размером 11 пт. Для этого:
1.В диалоговом окне Макрос (Сервис → Макрос → Макросы) выберем
«Формат_таблицы» и, нажав кнопку «Изменить», зайдем в редактор VB.
2.Далее найдем строчки, соответствующие диапазону шапки таблицы, и в них изменим значения свойств шрифта (Font): для свойства .Name установим значение «Courier New», а для свойства .Size – значение, равное 11. Фрагмент кода с внесенными изменениями представлен на рис. 10.
Закроем окно редактора, активизируем ячейку А1 и запустим макрос «Формат_таблицы» (рис. 11).
13
Соседние файлы в папке Лабораторный практикум
- #
- #
- #
- #
- #
- #
- #
0 / 0 / 0 Регистрация: 19.06.2014 Сообщений: 2 |
|
1 |
|
11.10.2009, 14:56. Показов 13585. Ответов 8
Нужна помощь в решении задач VBA (excel) №1. Поменяйте местами содержимое ячейки А10 (один) и ячейки В10 (два) при нажатии кнопки *замена*. №2. Начиная с ячейки D2, при нажатии кнопки *сумма* просуммируйте содержимое непустых ячеек строки. Результат поместите в пустую ячейку, следующую за ней непустой.
0 |
yaser 134 / 79 / 6 Регистрация: 06.04.2009 Сообщений: 192 |
||||
11.10.2009, 15:50 |
2 |
|||
0 |
0 / 0 / 0 Регистрация: 19.06.2014 Сообщений: 2 |
|
11.10.2009, 20:32 |
3 |
огромное спасибо!!!!
0 |
3 / 3 / 0 Регистрация: 18.12.2012 Сообщений: 49 |
|
30.03.2013, 17:40 |
4 |
Извините что поднимаю такую древнюю тему
0 |
Почетный модератор 28040 / 15771 / 981 Регистрация: 15.09.2009 Сообщений: 67,752 Записей в блоге: 78 |
|
30.03.2013, 17:48 |
5 |
не могли бы объяснить 4 задачу. простите, может я чего то не вижу, но тут только две задачи?
0 |
Igor_Tr 4377 / 661 / 36 Регистрация: 17.01.2010 Сообщений: 2,134 |
||||
30.03.2013, 18:45 |
6 |
|||
Может, пригодится. Меня иногда выручает, что б уйти от цикла и дополнительных переменных. Через Specialcells:
0 |
3 / 3 / 0 Регистрация: 18.12.2012 Сообщений: 49 |
|
31.03.2013, 14:46 |
7 |
простите, может я чего то не вижу, но тут только две задачи? ой. вторую задачу то есть
0 |
971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
|
31.03.2013, 21:01 |
8 |
Igor_Tr, по-моему, проще писать цифру 2, вместо [D2].Row
0 |
4377 / 661 / 36 Регистрация: 17.01.2010 Сообщений: 2,134 |
|
01.04.2013, 03:48 |
9 |
to_Pavel55. Что-то совсем не соображаю. Где именно Вы имеете в виду? Вижу только, что в моем выражении не мешало бы подстраховаться вот так …SpecialCells(xlCellTypeConstants, xlNumbers)) А! Дошло. Да, если точно знаем (но такое бывает очень не часто, лучше (!)
0 |
Лабораторный практикум по VBA
Как организовать дистанционное обучение во время карантина?
Помогает проект «Инфоурок»
Выберите книгу со скидкой:
ЕГЭ. Информатика. Новый полный справочник для подготовки к ЕГЭ
350 руб. 171.00 руб.
Изучаем C++ через программирование игр
350 руб. 837.00 руб.
ОГЭ-2020. Информатика. Тренировочные варианты
350 руб. 205.00 руб.
Высоконагруженные приложения. Программирование, масштабирование, поддержка
350 руб. 2446.00 руб.
ЕГЭ-2020. Информатика. Сборник заданий: 350 заданий с ответами
350 руб. 111.00 руб.
Выразительный JavaScript. Современное веб-программирование. 3-е издание
350 руб. 1815.00 руб.
Современный язык Java. Лямбда-выражения, потоки и функциональное программирование
350 руб. 2085.00 руб.
Вероятностное программирование на Python: байесовский вывод и алгоритмы
350 руб. 1748.00 руб.
Объектно-ориентированное программирование в С++. Классика Computer Science
350 руб. 1702.00 руб.
Изучаем программирование на JavaScript
350 руб. 2092.00 руб.
Экстремальное программирование: разработка через тестирование
350 руб. 994.00 руб.
CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#. 4-е изд.
350 руб. 1843.00 руб.
БОЛЕЕ 58 000 КНИГ И ШИРОКИЙ ВЫБОР КАНЦТОВАРОВ! ИНФОЛАВКА
Инфолавка — книжный магазин для педагогов и родителей от проекта «Инфоурок»
Бесплатный
Дистанционный конкурс «Стоп коронавирус»
Необходимо открыть файл index.htm.
Курс содержит 8 лабораторных работ по программированию в Microsoft Excel на Visual Basic for Applications. Лабораторные работы ориентированы на учащихся старших классов в рамках учебного процесса на уроках или во внеурочной деятельности. Данный курс можно использовать и в проектной деятельности.
- Зятикова Светлана Николаевна
- Написать
- 133
- 31.10.2019
Номер материала: ДБ-770532
Добавляйте авторские материалы и получите призы от Инфоурок
Еженедельный призовой фонд 100 000 Р
- 31.10.2019
- 59
- 31.10.2019
- 50
- 31.10.2019
- 112
- 31.10.2019
- 42
- 31.10.2019
- 68
- 31.10.2019
- 46
- 31.10.2019
- 37
- 31.10.2019
- 39
Не нашли то что искали?
Вам будут интересны эти курсы:
Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.
Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако редакция сайта готова оказать всяческую поддержку в решении любых вопросов связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.
Практическая работа в редакторе VBA «Создание пользовательской формы «Расчет скорости»»
Тип урока: урок закрепления новых знаний и выработки умений.
Цель урока: закрепление пройденного материала по созданию пользовательской формы; вставки надписей, полей, кнопок и картинки в пользовательскую форму; программирование кнопок пользовательской формы; вызов пользовательской формы на рабочий стол редактора Excel; проверка работы пользовательской формы.
Оборудование: компьютер, проектор, экран.
Продолжительность работы: 40 минут.
Домашнее задание: 5 минут.
- Открыть или создать файл для работы;
- Перейти в редактор Visual Basic (Сервис >Макрос >редактор Visual Basic);
- Создать пользовательскую форму (Insert>UserForm);
- На панели элементов выбрать пиктограмму “Label” — “Надпись”;
— щелкнуть правой кнопкой по окну “Label1” и выбрать команду “Properties”;
— в появившемся окне свойств выбрать:
— свойство “Caption”, в котором вместо слова “Label1” написать слово “Расстояние”;
— свойство “TextAlign”, в котором поставить цифру 2 – выравнивание по центру.
— свойство “Picture” и щелкните по слову “None”;
— в появившемся окне “LoadPicture” войти на Рабочий стол, найти
свой файл “Машина” и выполнить команду “Открыть”;
— в свойстве “PictureAlignment” поставить “0”, должна появиться картинка
Вашей машины.
— два раза щелкните по кнопке “Выход из формы”;
— написать оператор UserForm1.Hide (закрыть пользовательскую форму №1);
- Запрограммировать кнопку “CommandButton2” — “Расчет скорости” для этого:
— два раза щелкнуть по кнопке;
— написать программу:
S = Val(TextBox1) — считываем значение из окошка TextBox1
T = Val(TextBox2) — считываем значение из окошка TextBox2
V = S / T — производим вычисление скорости
TextBox3 = Str(V) — полученное значение записываем в окошко TextBox3
? два раза щелкнуть по кнопке левой кнопкой мыши;
? написать фразу – UserForm1.Show (Показать пользовательскую форму №1)
На панели элементов отключить Режим конструктора.
Создать пользовательскую форму по заданному образцу и проверить ее работу.
Лабораторный практикум по VBA
Как организовать дистанционное обучение во время карантина?
Помогает проект «Инфоурок»
Выберите книгу со скидкой:
ЕГЭ. Информатика. Новый полный справочник для подготовки к ЕГЭ
350 руб. 171.00 руб.
Изучаем C++ через программирование игр
350 руб. 837.00 руб.
ОГЭ-2020. Информатика. Тренировочные варианты
350 руб. 205.00 руб.
Высоконагруженные приложения. Программирование, масштабирование, поддержка
350 руб. 2446.00 руб.
ЕГЭ-2020. Информатика. Сборник заданий: 350 заданий с ответами
350 руб. 111.00 руб.
Выразительный JavaScript. Современное веб-программирование. 3-е издание
350 руб. 1815.00 руб.
Современный язык Java. Лямбда-выражения, потоки и функциональное программирование
350 руб. 2085.00 руб.
Вероятностное программирование на Python: байесовский вывод и алгоритмы
350 руб. 1748.00 руб.
Объектно-ориентированное программирование в С++. Классика Computer Science
350 руб. 1702.00 руб.
Изучаем программирование на JavaScript
350 руб. 2092.00 руб.
Экстремальное программирование: разработка через тестирование
350 руб. 994.00 руб.
CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#. 4-е изд.
350 руб. 1843.00 руб.
БОЛЕЕ 58 000 КНИГ И ШИРОКИЙ ВЫБОР КАНЦТОВАРОВ! ИНФОЛАВКА
Инфолавка — книжный магазин для педагогов и родителей от проекта «Инфоурок»
Бесплатный
Дистанционный конкурс «Стоп коронавирус»
Необходимо открыть файл index.htm.
Курс содержит 8 лабораторных работ по программированию в Microsoft Excel на Visual Basic for Applications. Лабораторные работы ориентированы на учащихся старших классов в рамках учебного процесса на уроках или во внеурочной деятельности. Данный курс можно использовать и в проектной деятельности.
- Зятикова Светлана Николаевна
- Написать
- 134
- 31.10.2019
Номер материала: ДБ-770532
Добавляйте авторские материалы и получите призы от Инфоурок
Еженедельный призовой фонд 100 000 Р
- 31.10.2019
- 59
- 31.10.2019
- 50
- 31.10.2019
- 112
- 31.10.2019
- 42
- 31.10.2019
- 68
- 31.10.2019
- 46
- 31.10.2019
- 37
- 31.10.2019
- 39
Не нашли то что искали?
Вам будут интересны эти курсы:
Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.
Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако редакция сайта готова оказать всяческую поддержку в решении любых вопросов связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.
Практикум: Программирование макросов на VBA в Microsoft Excel 2019-2016
Ближайшая группа:
Стоимость обучения 6 450 ₽
Изучили все особенности создания макросов на VBA? – Самое время закрепить новые знания на практике! Практикум «Создание макросов в Microsoft Excel на VBA» – самый полезный способ овладения навыками уверенной работы со всеми инструментами VBA, что поможет Вам без проблем решать задачи любого уровня сложности, возникающие при создании макросов в Excel.
Практикум построен как выполнение единой комплексной задачи посредством последовательного создания нескольких макросов, а затем их объединения их в одно решение. В ходе выполнения данного кейса Вы используете почти все инструменты, изученные на предыдущих курсах по VBA, и такой подход станет для Вас лучшим способом закрепления полученных во время обучения знаний.
Вы в режиме реальной работы познакомитесь с инструментами FileSystemObject, Collection, SQL, научитесь обращаться к объектным моделям с помощью ADO, Outlook и др. Освоив программу практикума, Вы научитесь использовать возможности языка программирования VBA для быстрой и эффективной автоматизации операций, часто повторяющихся в работе с Microsoft Excel.
Практикум адресован опытным пользователям Excel, имеющим базовый опыт создания макросов на языке VBA (Visual Basic for Applications). Своим опытом с Вами поделится преподаватель-практик, настоящий эксперт Microsoft Excel.
Научитесь профессионально создавать макросы в Microsoft Excel! Пройдите наш практикум!
Во время обучения Вы узнаете:
Постановка задачи
Структура и алгоритм решения, перечень используемых инструментов
Разработка, отладка и тестирование отдельных модулей решения
- Диалоговое окно для выбора обрабатываемых файлов (UserForm, FileDialog).
- Сбор выбранных файлов в коллекцию для последующей обработки (FileSystemObject, Collection, циклы).
- Цикличный перебор файлов и листов (циклы, объекты Workbook и Worksheet).
- Организация ProgressBar для информирования пользователя о ходе выполнения макроса (UserForm).
- Сбор данных с листов с нормализацией структуры данных в сводный лист (циклы, массивы, всевозможные свойства и методы объекта Range).
- Формирование сводных отчётов на основании части данных исходного массива с помощью SQL (PivotTable, объектная модель ADO, SQL).
- Создание директории и сохранение созданных отчётов в неё (функции VBA для работы с файловой системой).
- Отправка сформированных файлов через Outlook (объектная модель Outlook, вызов процедуры с аргументами).
Организация последовательного вызова макросов, окончательное тестирование решения
Учебная нагрузка в классе
20 ак.ч.
Ближайшие группы:
Преподаватели:
Тихонов Ярослав Анатольевич
Cертифицированный инструктор, обладатель престижных международных сертификаций, подтверждающих экспертный статус, включая Microsoft Office Specialist Master. Эксперт в области бизнес-аналитики и сложного анализа данных. Практикующий преподаватель курсов по Microsoft Excel. В совершенстве владеет пакетом MS Office и с удовольствием делится своими ценными знаниями со слушателями. Под его руководством Вы узнаете все секреты правильного использования сложных формул и расчётов в Excel!
Ярослав Анатольевич имеет большой опыт работы в различных областях: IT, маркетинг, продажи, медиа. Начинал профессиональную карьеру с должности инженера-тестировщика. Работал в страховании, атомной отрасли, телекоме, в области системной интеграции. В послужном списке числятся известные компании, включая LETA IT-company и ЗАО «КРОК инкорпорейтед».
Преподаватель всегда открыт для аудитории и с радостью отвечает на возникающие вопросы. Обучение на курсах под руководством Ярослава Анатольевича станет залогом Вашего успеха на пути становления настоящим профессионалом Microsoft Excel.
Сертифицированный специалист Microsoft Office Excel® 2016 Expert
Сертифицированный специалист Microsoft Office Outlook® 2016
Сертифицированный специалист Microsoft Office PowerPoint® 2016
Сертифицированный специалист Microsoft Office Specialist 2016 Master
Сертифицированный специалист Microsoft Office Word 2016 Expert
Понравится Вам и выполнение практических работ под наблюдением Сергея Батулина, и особенно профессиональный разбор их результатов, который проведет преподаватель по их окончании.
Книги для изучения Excel и VBA
Содержание этой страницы полностью соответствует названию. Здесь я буду выкладывать книги для изучения Excel и VBA, различные справочники или ссылки на ресурсы, с которых подобные справочники и книги можно скачать. Выложенные пособия могут пригодиться не только начинающим изучать Excel и VBA, но и более продвинутым пользователям.
Справочник по функциям листа Excel — это справочник по функциям листа Excel в формате справки Windows .chm. Файл содержит полный перечень функций листа Excel на русском и английском языках и снабжена примерами использования и применения функций. Справочник может понадобиться как начинающим, так и уже более искушенным пользователям.
Формат файла: .chm
Справочник по функциям листа Excel (532,2 KiB, 15 678 скачиваний)
У Вас нет прав для скачивания этого файла. Возможно, Вы не зарегистрированы на сайте. Зарегистрируйтесь и попробуйте скачать снова.
VBA Программирование в MSOffice — очень хороший учебник для начинающих программировать в VBA. Книга написана сертифицированным преподавателем Microsoft Office доступным для понимания языком, снабжена грамотными листингами кодов. Учебник поможет освоить программирование не только в Microsoft Excel, но и Microsoft Word и Microsoft Project.
Формат файла: .pdf
VBA Программироваие в MSOffice (4,1 MiB, 26 879 скачиваний)
У Вас нет прав для скачивания этого файла. Возможно, Вы не зарегистрированы на сайте. Зарегистрируйтесь и попробуйте скачать снова.
Уокенбах Дж. Профессиональное программирование в VBA Excel 2003 — пожалуй самый популярный учебник для начинающих. Многие начинали именно с него. Правда, в печатной версии данного учебника использованы листинги кодов, которые не всегда нужно принимать на веру — очень часто там встречаются опечатки и вместо английских символом встречаются русские. Поэтому лично я бы посоветовал не копировать коды напрямую из книги, а переписывать их вручную в редакторе VBA. Так и запомнится лучше и избавите себя от поиска ошибок.
Формат файла: .pdf
Ссылка удалена по требованию правообладателя
Office 2007. Самоучитель — Если Вы решили поближе познакомиться с интерфейсом и основными возможностями приложений Microsoft Office, то советую почитать данную книгу. В ней описано все необходимое для успешной работы в таких приложениях как: Excel, Word, Outlook, Power Point, Access. После прочтения Вы сможете создавать красивые презентации и информативные графики, научитель создавать задачи в Outlook и базы в Access.
Формат файла: .pdf
Ссылка для скачивания: 2007_Samouchitel.zip
Пароль к архиву: 12345
Он-лайн видеообучение — Данная ссылка отличается от всех описанных выше тем, что это не книга — это он-лайн сервис. Бесплатный. На этом сайте просто огромное количество материала и по Excel, и по Word, и по Outlook, и по VBA и по другим языкам программирования. Чем удобны такие материалы: Вам рассказывают и одновременно показывают необходимые действия. Это намного лучше одной статической картинки. И я бы сравнил это с живыми курсами, с той лишь разницей, что Вы не можете задать вопрос преподавателю. Но есть и плюсы — Вы в любой момент можете остановить урок, отдохнуть, а затем продолжить обучение с того момента, на котором закончили.
Русская справка по Visual Basic for Application(VBA) — Это официальная справка по Visual Basic for Application(VBA), которая была включена в пакет Microsoft Office 97. Тогда справка была еще русифицирована. Ни для кого не секрет, что сейчас во всех версиях офиса справка по VBA доступна только на английском языке, независимо от локализации. А по буржуйски не все могут читать(даже сносно, как показывает практика).
Хочу сразу предупредить — т.к. справка предназначена для довольно старой версии, в ней описаны не все методы и свойста. Но основная их масса все же описана и, надеюсь, данная справка поможет Вам в начальном изучении VBA.
Формат файла: .файл справки
RUS_VBA.zip (1,1 MiB, 9 294 скачиваний)
У Вас нет прав для скачивания этого файла. Возможно, Вы не зарегистрированы на сайте. Зарегистрируйтесь и попробуйте скачать снова.
Объекты Shell_RegExp и пр — целый сборник примеров работы с такими объектами как: Shell, RegExp, FileSystemObject, WshShell, Dictionary, WshNetwork, WScript, константы и функции WScript. Все примеры структурированы по разделам и сделаны в качестве справки по свойствам и методам каждого из объектов. Очень удобно, если не очень часто применяете в работе эти объекты и что-то забылось.
Формат файла: .файл справки
_Shell_RegExp__.chm (207,6 KiB, 1 519 скачиваний)
VBA First Steps — по сути это сохраненный в формате справки сайт http://www.firststeps.ru/, который собрал в себе множество приемов по работе в VBA как для начинающих его изучать, так и для более продвинутых.
Формат файла: .файл справки
VBA_First_Steps.chm (1,1 MiB, 2 555 скачиваний)
vbfunction — описание и примеры использование почти всех встроенных функций VBA в алфавитном порядке от А.Климова.
Формат файла: .файл справки
vbfunction.chm (139,3 KiB, 2 731 скачиваний)