Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EI_ НМЗ (IV частина)_ЗВ.docx
Скачиваний:
64
Добавлен:
27.10.2018
Размер:
2 Мб
Скачать
☆

Завдання до практичної роботи: Частина і

1.За допомогою конструктора, створити в Microsoft Word такі макроси. Завантажити їх, переглянути їх в режимі редактора, що:

  • створює таблицю за зразком та додає в першу комірку поточну дату

03/12/2010

  • відкриває файл Стили.doc, (створений у роботі №2 попереднього модуля) і встановити для всього тексту накреслення ПолужирныйКурсив;

  • виконує будь-які команди (за бажанням).

  1. Надрукувати результати завантаження маросів та їх зміст на мові VBA (на одному аркуші).

  2. Видалити всі створені макроси з бібліотеки. Видалити кнопки з панелі швидкого доступу, що завантажують створені макроси.

Частина іі

  1. За допомогою конструктору в Microsoft Excel на різних аркушах однієї робочої книги створити наступні макроси та призначити їх заватаження кнопкам:

  • для створення електронної таблиці як на рис. 10.1. ;

  • для створення електронної таблиці розв’язування будь-якої фінансової задачі( з практичної роботи №12 попереднього модуля);

  • для створення ЕТ довільного змісту.

2. Надрукувати підсумки завантаження макросів, а також їх зміст на мові VBA.

3. Зберегти файл на ЗНІ з ім’ям макросы.xlsx

Практична робота №11 Тема роботи: Створення програм - додатків мовою vba

Мета роботи: закріплення навичок програмування лінійних та розгалужених алгоритмів на мові VBA.

План:

  1. Створення функцій користувача.

  2. Налаштування програм – додатків, створених мовою VBA

  3. Завантаження програм.

  4. Створення програм для розгалужених функцій.

Теоретичні відомості

Створення функцій користувача. Крім функцій, які можна обчислювати за допомогою Мастера функций, в MS Excel можна обчислювати значення будь-яких інших функцій, наприклад, . Такі нестандартні функції називаються функціями користувача.

Розглянемо технологію створення програм для обчислення таких функцій на прикладі функції . Функцію користувача створюють в стандартному модулі VBA (редакторі). Для того, щоб жавантажити VBA-редактор, можна скористатись кнопкою , яку можна ствоити на панелі швидкого доступу. В вікні Project відображується ієрархічна структура файлів, форм і модулів поточного проекту. Щоб додати новий модуль до проекту виконується команда Insert,Module.

Далі, в вікно редактора необхідно ввести:

Function y(x As Double) As Double (1)

y = x ^ 2 + 2 * x – 3

End Function

В першому рядку вказується ім’я функції та типи аргументу х та функції у (Double - з плаваючою точкою подвійної точності). Закінчується робота з редактором натисненням кнопки (закрити поточне вікно). Після того, як функція користувача створена, вона за замовчуванням попадає в розділ функции Определенные пользователем списка Категории вікна Мастер функции.

Переконатись в цьому! Для цього звернутись до бібліотеки функцій за допомогою , , Функции определенные пользователем.

Розглянемо технологію створення програми на VBA, яка здійснює табуляцію даної функції, якщо . Це можна зробити за допомогою модуля:

Sub demo() (2)

Range(“a1”).Value = 0

Range(“a1”).DataSeries RowCol:=xlColumns,

Type:=xlDataSeriesLinear, Step:=0.5, Stop:=10

Dim rgn As Range

Set rgn = Range(“a1”).CurrentRegion

Set rgn = rgn.Offset(0, 1)

Range(“b1”).Formula = “=y(a1)”

Range(“B1”).AutoFill Destination:=rgn, Type:=xlFillCopy

rgn.NumberFormat = “0.000”

End Sub

Завантаження програм. Щоб завантажити створену програму використовується меню Run,Run Sub вікна Microsoft Visual Basic або з вікна MS Excel. Після завантаження цього модуля отримаємо таблицю значень як на рис.11.1.

Проаналізуємо окремі інструкції цього модуля. За допомогою інструкції Range(«a1»).Value = 0 в комірку А1 вводиться число 0.

Щоб заповнити діапазон елементами прогресії (0,5;1;1,5…,10) використовується метод DataSeries ; він має параметри : RowCol визначає напрямок, в якому створюється прогресія , тобто вздовж стовпців (xlColumns); Type визначає тип прогресії, у цьому випадку xlDataSeriesLinear (лінійна, використовується за замовчуванням); Step визначає крок змінення прогресії (за замовчуванням дорівнює 1); Stop –граничне значення прогресії.

Наступна інструкція визначає поточний діапазон, в якому розташовані значення аргументів, для функції , значення якої обчислюються:

Dim rgn As Range

Set rgn = Range(“a1”).CurrentRegion,

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

Додамо до програми, так званий, елемент керування, у вигляді рядка керування (строки ввода) для того, щоб була можливість вводити будь-яке початкове значення аргументу , а не тільки :

Dim n As String

n = InputBox(«Введіть початкове значення аргументу функції»)

Debug.Print n

Після цього виправимо в попередньому фрагменті значення Range(«a1»).Value = n.

Рис. 11.1. Таблиця значень функції

якщо

Після внесення цих змін,

програма прийме вигляд:

Sub demo()

Dim rgn As Range

Dim n As String

n = InputBox(«Введіть початкове значення аргументу функції»)

Debug.Print n

Range(«a1»).Value = n

Range(«a1»).DataSeries RowCol:=xlColumns, Type:=xlDataSeriesLinear, Step:=0.5, Stop:=10

Set rgn = Range(«a1»).CurrentRegion

Set rgn = rgn.Offset(0, 1)

Range(«b1»).Formula = «=y(a1)»

Range(«B1»).AutoFill Destination:=rgn, Type:=xlFillCopy

rgn.NumberFormat = «0.000»

End Sub

Додамо до програми фрагмент, який в комірки В1 і С1 поточного аркушу вводить поточну дату та прізвище, ім’я розробника цієї програми:

Dim t As Date

t = FormatDateTime(Now)

Range(«c1»).Value = t

Range(«d1»).Value = «Кравцова Ганна»

Кінцевий вигляд програми буде такий :

Sub demo()

Dim rgn As Range

Dim n As String

Dim t As Date

n = InputBox(«Введіть початкове значення аргументу функції»)

Debug.Print n

Range(«a1»).Value = n (3)

Range(«a1»).DataSeries RowCol:=xlColumns, Type:=xlDataSeriesLinear,

Step:=0.5, Stop:=10

Set rgn = Range(«a1»).CurrentRegion

Set rgn = rgn.Offset(0, 1)

Range(«b1»).Formula = «=y(a1)»

Range(«B1»).AutoFill Destination:=rgn, Type:=xlFillCopy

rgn.NumberFormat = «0.000»

t = FormatDateTime(Now)

Range(«c1»).Value = t

Range(«d1»).Value = «Кравцова Ганна»

End Sub

Створення програм для розгалужених функцій. Нехай тепер потрібно обчислити значення розгалуженої функції:

Програма-функція матиме вигляд:

Function yy(x As Double) As Double

If x < 0 Then

yy = 1 / x

Else

yy = Sqr(x) (4)

End If

End Function

Програмний модуль, що виконує табулювання цієї функції буде мати вигляд:

Sub demo2()

Dim rgn As Range

Dim n, m, k As String

n = InputBox("Введіть початкове значення аргументу функції")

Debug.Print n

Range("a1").Value = n (5)

m = InputBox("Введіть кінцеве значення аргументу функції")

Debug.Print m

k = InputBox("Введіть значення приросту аргументу функції")

Debug.Print k

Range("a1").DataSeries RowCol:=xlColumns,Type:=xlDataSeriesLinear,

Step:=k, Stop:=m

Set rgn = Range("a1").CurrentRegion

Set rgn = rgn.Offset(0, 1)

Range("b1").Formula = "=yy(a1)"

Range("B1").AutoFill Destination:=rgn, Type:=xlFillCopy

rgn.NumberFormat = "0.000"

End Sub

Звернути увагу на те, що кінцеве значення аргументу функції та його приріст теж задаються через рядок введення!

Крім функцій, що були використані, в Excel, можна обчислювати ще й наступні:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]