Практикум по vba для microsoft excel ответы

Задачник на 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.
Вычислить значение выражения равного

,
при x = 3, y =
2.5

Замечание:
значения x и вводит
пользователь.

Решение.

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 описываются
переменные Axкак
числа двойной точности.

При использовании
строки

x = InputBox(«Введите
x=»)

появиться окно

Пример 3.
Вычислить значение выражения равного

,
при x = 3, y =
2.5

Замечание:
значения x и вводит
пользователь, ответ выводится в виде
«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 = 3b = 4c = 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 позволяет
перейти в строку, в которой состоялась
ошибка выполнения (Runtime
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,
свойствами FontAlign.

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


Шаг
2. Создание
элементов для ввода данных.

2.1. Создать
блок для ввода данных стороны a с
помощью инструмента Поле панели
элементов. В окнеProperties,
присвоить ему свойство (Name) равное a_Textbox.

2.2. Создать
надпись «Сторона A=»
с помощью инструмента Надпись  панели
элементов. При необходимости воспользоваться
окном Properties,
свойствами FontAlign.

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. На
форму поместить надпись «Цена» и
соответствующее текстовое поле. Для
этого необходимо:

    1. На
      панели элементов управления щелкнуть
      элемент 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.

    1. В теле процедуры
      ввести оператор

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

  1. Постановка задачи: Составить программу нахождения площади прямоугольника со сторонами Х и У.
  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

  1. Постановка задачи: Составить программу перевода строки в нижний регистр.
  1. Интерфейс задачи:
  1. Листинг программы:

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

  1. Постановка задачи: Составить программу перевода температуры из шкалы Фаренгейта в шкалу Цельсия (0 F соответствует -17,8, а 0 C соответствует+32 F ).
  2. Интерфейс задачи:
  1. Листинг программы:

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

  1. Постановка задачи: Составить программу определения, в норме ли вес обследуемого пациента (нормой считается вес, равный (рост(см)-100)5кг).
  2. Интерфейс задачи:
  1. Листинг программы:

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

  1. Постановка задачи: Составить программу, определяющую сколько раз встречается заданное число (вводится с клавиатуры) в диапазоне от 10 до 352.
  2. Интерфейс задачи:
  1. Листинг программы:

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

  1. Постановка задачи: Составить программу нахождения суммы минимального и максимального в массиве из 20 чисел.
  2. Интерфейс задачи:
  1. Листинг программы:

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

  1. Постановка задачи: Составить программу определения средней оценки списка студентов по трём предметам.
  2. Интерфейс задачи:
  1. Листинг программы:

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

  1. Постановка задачи: Решить задание № 7 и отсортировать список по возрастанию средней оценки.
  1. Интерфейс задачи:

До сортировки:

После сортировки:

  1. Листинг программы:

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

(Функция)

  1. Постановка задачи: Решить задание № 8 с использованием подпрограмм.
  2. Интерфейс задачи:

До сортировки

После сортировки

  1. Листинг программы:

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

(Процедура)

  1. Постановка задачи: Решить задание № 8 с использованием подпрограмм.
  2. Интерфейс задачи:

До сортировки

После сортировки

  1. Листинг программы:

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

  1. Постановка задачи: Составить программу рисования цифр 0-9 в псевдографике. Полученный рисунок сохранить в файл.
  1. Интерфейс задачи:
  1. Листинг программы:

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub CommandButton1_Click()
Dim sA10 As String
 
  sA10 = Range("A10")
  Range("A10") = Range("B10")
  Range("B10") = sA10
  
End Sub
 
Private Sub CommandButton2_Click()
Dim nColumn As Integer
Dim dbSumm As Double
 
  nColumn = 4
  While Cells(2, nColumn) <> ""
    dbSumm = dbSumm + Cells(2, nColumn)
    nColumn = nColumn + 1
  Wend
  Cells(2, nColumn) = dbSumm
 
End Sub



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

Извините что поднимаю такую древнюю тему
но не могли бы объяснить 4 задачу. Как так получается что он прямо сумму вставляет после непустой ячейки. я прочитал про offset но это функция сдвига ячеек. Объясните пожалуйста как так получается



0



Почетный модератор

Эксперт по компьютерным сетямЭксперт Windows

28040 / 15771 / 981

Регистрация: 15.09.2009

Сообщений: 67,752

Записей в блоге: 78

30.03.2013, 17:48

5

Цитата
Сообщение от FRINGE
Посмотреть сообщение

не могли бы объяснить 4 задачу.

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



0



Igor_Tr

4377 / 661 / 36

Регистрация: 17.01.2010

Сообщений: 2,134

30.03.2013, 18:45

6

Может, пригодится. Меня иногда выручает, что б уйти от цикла и дополнительных переменных. Через Specialcells:

Visual Basic
1
2
3
4
Cells([D2].Row, Columns.Count).End(xlToLeft).Offset(0, 2).Value = _
            Application.Sum(Range([D2], Cells([D2]. _
                    Row, Columns.Count).End(xlToLeft)). _
                            SpecialCells(xlCellTypeConstants))



0



3 / 3 / 0

Регистрация: 18.12.2012

Сообщений: 49

31.03.2013, 14:46

7

Цитата
Сообщение от magirus
Посмотреть сообщение

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

ой. вторую задачу то есть



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))

А! Дошло. Да, если точно знаем (но такое бывает очень не часто, лучше (!) привыкать к экстриму сразу). Поэтому здесь как Демо и на ходу, хотелось подсказать, что каким-то образом из какого-то выражения вытягиваем номер ряда ([D2].row). А так — Вы правы. И смотрю, так никто и не обяснил Мэри про While. А у меня праздники…



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 минут.

  1. Открыть или создать файл для работы;
  2. Перейти в редактор Visual Basic (Сервис >Макрос >редактор Visual Basic);
  3. Создать пользовательскую форму (Insert>UserForm);

    На панели элементов выбрать пиктограмму “Label” — “Надпись”;

  • В пользовательской форме нарисовать окно для надписи.
  • В окне сделать надпись “Расстояние”, для этого:
    — щелкнуть правой кнопкой по окну “Label1” и выбрать команду “Properties”;

    — в появившемся окне свойств выбрать:

    — свойство “Caption”, в котором вместо слова “Label1” написать слово “Расстояние”;
    свойство “TextAlign”, в котором поставить цифру 2 – выравнивание по центру.

  • Аналогичным образом сделать еще две надписи: “Время” и “Скорость”.
  • Подключить пиктограмму “TextBox”“Поле” и под каждой надписью нарисовать окно.

  • Подключить пиктограмму “CommandButton”“Кнопка”.
  • Нарисовать в пользовательской форме 2 кнопки и подписать их “Выход из формы” и “Расчет Скорости” с помощью свойств “Caption” и “TextAlign”.
  • Свернуть окно редактора Visual Basic.
  • Войти в редактор Paint и нарисовать машинку в верхнем левом углу рабочего листа.
  • Сохранить данный рисунок на Рабочем столе под именем “Машина”.
  • Развернуть Пользовательскую форму.
  • Нажать пиктограмму “Image”.

  • Нарисовать окно в пользовательской форме.
  • В появившемся окне “Properties” выбрать:
    — свойство “Picture” и щелкните по слову “None”;
    — в появившемся окне “LoadPicture” войти на Рабочий стол, найти

    свой файл “Машина” и выполнить команду “Открыть”;
    — в свойстве “PictureAlignment” поставить “0”, должна появиться картинка
    Вашей машины.

  • В получившейся пользовательской форме запрограммируйте кнопку “CommandButton1” для этого:
    — два раза щелкните по кнопке “Выход из формы”;
    — написать оператор UserForm1.Hide (закрыть пользовательскую форму №1);
    1. Запрограммировать кнопку “CommandButton2”“Расчет скорости” для этого:

    — два раза щелкнуть по кнопке;
    — написать программу:
    S = Val(TextBox1) — считываем значение из окошка TextBox1

    T = Val(TextBox2) — считываем значение из окошка TextBox2

    V = S / T — производим вычисление скорости

    TextBox3 = Str(V) — полученное значение записываем в окошко TextBox3

  • Перейти на рабочий лист редактора Excel.
  • Подключить панель элементов (Вид > Панели инструментов > Панель элементов).
  • Начертить кнопку и подписать ее “Вызов формы”. Запрограммировать данную кнопку, для этого:
    ? два раза щелкнуть по кнопке левой кнопкой мыши;
    ? написать фразу – 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 скачиваний)

    Понравилась статья? Поделить с друзьями:
  • Прайс на автомойку excel
  • Практикум по microsoft office 2007 word excel access photoshop
  • Прайс на автозапчасти в excel
  • Практикум по excel пособие
  • Прайс лист электронной таблицы excel