Міністерство науки і освіти України
Національний університет “Львівська Політехніка”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
Звіт
З лабораторних робіт № 4,5,6
з курсу «Людино-машинні інтерфейси»
Виконано
Студент групи ПІ-21
Калакун Ярослав
Зараховано
Тушницький Р.Б.
Львів 2008
Тема: Створення макросів для MsExcel
Мета: Навчитись створювати макроси для прискорення роботи з MsExcel.
Завдання:
Створити макрос який дозволяє швидко побудувати діаграму
Створіть функцію згідно варіанту. Перевірте що створена нова функція з’явилася у загальному списку функцій, викликавши, наприклад Майстер функцій у MS Excel. Викоричтовуючи функцію користувача, протабулюйте кожну функцію в MS Excel на деякому проміжку. Побудуйте діаграму для функції однієї змінної та функції з одним умовним оператором переходу.
3. Створити макрос який здійснює сумування чисел у виділених комірках. Продемонструвати роботу із Combo Box.
Теоретичні відомості
Кожний об'єкт Excel має у своєму розпорядженні набір властивостей (properties) і методів (methods). Прикладами об'єктів в Excel є книги, аркуші, діаграми, шрифти й т.п. Сюди включаються 192 об'єкта, у тому числі приховані й застарілі.
Термін властивість у цьому випадку використовується у тому ж контексті, що й у звичайній українській мові. Це особливість, атрибут або характеристика об'єкта. Наприклад, об'єкт Worksheet має 55 властивостей, у число яких входять Cells, Mate, ProtectionMode і UserRange. Значення властивості може належати до будь-якого дійсного типу даних, скажемо, Integer, Single, String або навіть до одного з об'єктних типів даних.
Якщо значення властивості належить до типу Integer, воно називається цілочисельним. Цілочисельні властивості настільки поширені, що компанія Microsoft створила велику кількість вбудованих перечислень (їхнє число досягає 152, з 1266 індивідуальними константами), що дозволяють привласнювати цим значенням символьні імена. Наприклад, властивість Calculation об'єкта Application може приймати будь-яке значення з наступного перерахування:
Enum XlCalculation
xlCalculationManual = 4135
xlCalculationAutomatic = -4105
xlCalculationSemiatomatic = 2
End Enum
Значення властивості може бути об'єктом. Наприклад, властивість ActiveChart об'єкта Workbook повертає об'єкт Chart, що має свій власний набір властивостей і методів.
Тому що об'єкт Chart можна отримати з об'єкта Workbook, його називають дочірнім (child object). Відповідно, об'єкт Workbook буде батьківським (parent) стосовно об'єкта Chart.
Методом (method) називається дія, що може бути виконана над об'єктом. Наприклад, з об'єктом Worksheet зв'язаний метод Protect, що захищає аркуш від редагування.
У термінах програмування властивості й методи об'єкта є всього лише вбудованими функціями й підпрограмами. Важливо підкреслити, що в деяких випадках можна зіштовхнутися з досить довільним трактуванням даних термінів. Наприклад, елемент Item іноді називається властивістю, а іноді методом, залежно від розглянутого об'єкта. Іноді навіть співробітники компанії Microsoft не можуть точно визначитися.
Властивості й методи мають загальну назву: члени об'єкта (members). Їх не варто плутати з дочірніми об'єктами.
Тексти макросів:
Макрос 1:
Sub Макрос3()
'
' Макрос3 Макрос
' Макрос записан 13.11.2008 (Zhuk)
'
'
Range("A4:J4").Select
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("A4:J4"), PlotBy:= _
xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub
Макрос 2:
Attribute VB_Name = "Module1"
Public n As Integer
Public Sname, Pname, Rname As String
Function fun1(num As Double) As Double
fun1 = 2 * Cos(3 * 3.14156 * num) / Cos(num)
End Function
Function fun2(num, num1 As Double) As Double
fun2 = (1 - num * num1 - num ^ 2 - num1 ^ 2) / num1 ^ 3 - num / num1 ^ 2
End Function
Function fun3(num As Double) As Double
If num < 1 Then
fun3 = Abs(num - 5)
Else
fun3 = num ^ 2 - num - 1
End If
End Function
Sub Build()
UserForm1.Show
Dim i As Integer
Dim j As Double
Dim l As Double
l = 1
Cells(5, 1).Value = "P"
Cells(6, 1).Value = "Q"
Cells(7, 1).Value = "функція 1"
Cells(8, 1).Value = "функція 2"
Cells(9, 1).Value = " функція 3"
For i = 2 And j = 0 To n
Cells(5, i).Value = j
Cells(6, i).Value = l
Cells(7, i).Value = fun1(j)
Cells(8, i).Value = fun2(j, l)
Cells(9, i).Value = fun3(j)
j = j + 0.01
l = l + 0.03
Next i
Dim MyChartObject As ChartObject
Dim MyChart As Chart
Set MyChartObject = ActiveSheet.ChartObjects.Add(5, 115, 430, 210)
Set MyChart = MyChartObject.Chart
MyChart.SetSourceData Range(Cells(7, 2), Cells(7, n)), xlRows
MyChart.HasLegend = True
MyChart.ChartType = xl3DLine
With MyChart
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = Pname
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Rname
.HasTitle = True
.ChartTitle.Characters.Text = Sname & "1"
.SeriesCollection(1).Name = "=""Значення"""
End With
Dim MyChartObject2 As ChartObject
Dim MyChart2 As Chart
Set MyChartObject2 = ActiveSheet.ChartObjects.Add(435, 115, 430, 210)
Set MyChart2 = MyChartObject2.Chart
MyChart2.SetSourceData Range(Cells(8, 2), Cells(8, n)), xlRows
MyChart2.HasLegend = True
MyChart2.ChartType = xl3DLine
With MyChart2
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = Pname
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Rname
.HasTitle = True
.ChartTitle.Characters.Text = Sname & "2"
.SeriesCollection(1).Name = "=""Значення"""
End With
Dim MyChartObject3 As ChartObject
Dim MyChart3 As Chart
Set MyChartObject3 = ActiveSheet.ChartObjects.Add(5, 325, 430, 210)
Set MyChart3 = MyChartObject3.Chart
MyChart3.SetSourceData Range(Cells(9, 2), Cells(9, n)), xlRows
MyChart3.HasLegend = True
MyChart3.ChartType = xl3DLine
With MyChart3
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = Pname
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Rname
.HasTitle = True
.ChartTitle.Characters.Text = Sname & "3"
.SeriesCollection(1).Name = "=""Значення"""
End With
End Sub
Private Sub CommandButton1_Click()
n = TextBox1.Value
Sname = TextBox2.Value
Rname = TextBox3.Value
Pname = TextBox4.Value
UserForm1.Hide
End Sub
Макрос 3:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "Лист1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Private Sub CommandButton1_Click()
Dim S As Long
Dim a As Object
S = 0
For Each a In Selection
If IsNumeric(a.Value) Then S = S + a.Value
Next a
Cells(1, 1).Value = "Сума="
Cells(1, 2).Value = S
End Sub
Висновок: Я навчився за допомогою макросів спрощувати і прискорювати роботу в Ms Excel.