vba lekts 1

41
VBA

Upload: uka-shuree

Post on 09-Aug-2015

47 views

Category:

Education


3 download

TRANSCRIPT

Page 1: VBA lekts 1

VBA

Page 2: VBA lekts 1

Excel 5.0 анх бүрэн хэрэгжсэн

Excel дээрх Object Module нь

◦ Worksheets

◦ Charts

◦ Pivot table

◦ Математик , бизнесс, санхүүгийн, өгөгдлийн зэрэг

функцүүдтэй.

Page 3: VBA lekts 1

Код - нь ямар нэг даалгаврыг дэс дараалан

биелүүлнэ.

Модул - нь ажлын файлд хадгалагдсан

байдаг. Үүнийг VBE буюу Visual Basic Editorт

дуудан харж, засварлаж болно.

Процедур - нь кодыг зохион байгуулах

үндсэн нэгж юм. VBA –д Sub процедур, Function

процедур хэрэглэдэг.

Page 4: VBA lekts 1

Sub процедур командуудын цувааг өөртөө агуулдаг

бөгөөд тэдгээрийг олон аргаар ажиллуулж болдог.

Ж- нь

Sub Test()

sum=10+1

MsgBox “Хариу нь” & sum

End Sub

Page 5: VBA lekts 1

◦ Function процедур нь тодорхой нэг утгыг буцаадаг.

Өөр процедураас дуудагдаж болно, эсвэл ажлын

хуудасны томъёонд ашиглагдана.

Ж – нь

Function AddTwo(arg1,arg2)

AddTwo=arg1+arg2

End Function

Page 6: VBA lekts 1

Объект - Excel ийн workbook, worksheet, range,

chart зэрэг 100 гаруй объекттай байдаг.

◦ Объектуудыг VBA кодонд ашиглаж программчлан

даалгавруудыг гүйцэтгэнэ.

◦ Объект нь удамшлын зохион байгуулалттай.

Page 7: VBA lekts 1

Цуглуулга нь объектуудын бүлэг юм. Удамшлыг харуулахдаа цэг хэрэглэнэ.

Application.Workbooks(“Book1.xlsx”)

Application.Workbooks(“Book1.xlsx”).Worksheets(“Sheet1”)

Application.Workbooks(“Book1.xlsx”).Worksheets(“Sheet1”).Range(“A1”)

Page 8: VBA lekts 1

Идэвхитэй объект нь тодорхой заалтуудыг

орхисон үед автомат ойлгогдоно.

Worksheets(“Sheet1”).Range(“A1”)

Range(“A1”)

Page 9: VBA lekts 1

Объектийн шинж чанар нь объектод тодорхой

тохируулгууд хийхэд ашиглагддаг.

Ж-нь

Range буюу муж объект нь Name, Value гм, Graph буюу

график объект нь HasTitle, Type гм шинжтэй байдаг.

Шинжийг объектод оруулахдаа мөн цэгийг ашиглана.

Worksheets(“Sheet1”).Range(“A1”).Value

Page 10: VBA lekts 1

Хувьсагч нь утга хадгалах зорилготой нэр буюу

тухайн утгыг хадгалах санах ойн хаяг юм.

Хувьсагчид утга олгохдоо = тэмдэг

ашиглана.

Ner = Worksheets(“Sheet1”).Range(“A1”).Value

Page 11: VBA lekts 1

Метод нь объектоор хийгдэх үйлдэл юм.

Ж-нь

Range буюу муж объект нь ClearContents гэсэн мужийн

агуулгыг цэвэрлэх үйлдэлтэй методтой байдаг.

методыг тэмдэглэхдээ цэгийг ашиглана.

Worksheets(“Sheet1”).Range(“A1”).ClearContents

Page 12: VBA lekts 1

Програмчлалын бүтэц VBA нь орчин үеийн

програмчлалын хэлний бүх бүтцийг өөртөө

агуулдаг. Ж-нь массив, цикл гм

Үзэгдэл нь объектуудад танигдан код

бичигдсэнээр биелэгддэг.

Ж-нь ажлын файл нээгдэхэд Workbook_Open

үзэгдэл, ажлын хуудасны нүд өөрчлөгдөхөд

Worksheet_Change үзэгдэл биелэгдэнэ.

Page 13: VBA lekts 1

VBE нь VBA – ний бүх ажлуудыг хийдэг Excel

дээр ажилладаг тусгай програм юм.

VBA – тэй ажиллахын тулд Excel дээр

Developer цэсийг идэвхжүүлнэ. Үүний тулд

Office Button-ыг нээгээд Excel Options–ийг

сонгоно.

Popular хэсгээс Show Developer Tab – ийг чеклэнэ.

Page 14: VBA lekts 1
Page 15: VBA lekts 1

VBE рүү шилжихдээ :

ALT+F11

Developer цэснээс Visual Basic сонгоно.

Page 16: VBA lekts 1

Кодын цонхыг гаргахдаа

View цэснээс Code –ийг сонгоно.

Дүрст командаас

Урсгал цэснээс тус тус сонгоно.

Page 17: VBA lekts 1
Page 18: VBA lekts 1

Project Explorer – прожектын цонх нь ажлын

файл бүрийг прожект байдлаар харуулна.

Ctrl + R дуудна.

Hide нууна.

Page 19: VBA lekts 1

Кодын цонх нь прожектийн цонхны бүх

зүйлүүдтэй холбогдсон VBE кодуудыг агуулна.

Прожектийн цонхон дахь объектийн агуулгын

кодын цонхыг нээхдээ уг объект дээр double

click хийж гаргана.

Immediate цонх бичлэгүүдийг процедур

үүсгэхгүйгээр шууд ажиллуулж болдог цонх юм.

Ctrl+G гээр шууд нээнэ. Үүнийг кодын алдаа

шалгахад голдуу ашиглана.

Page 20: VBA lekts 1

Прожектод модул нэмэхдээ уг прожектоо

сонгоод Insert Module/Module сонгоно.

Прожектоос модул хасахдаа уг модулаа

сонгоод Remove Module сонгоно. Гэхдээ ажлын

файлтай холбогдсон модулыг хасаж болохгүй.

Page 21: VBA lekts 1

Объектийг тухайн прожект руу

импортлохдоо Import file командыг,

экспортлохдоо Export file командыг тус тус

хэрэглэнэ.

Page 22: VBA lekts 1

Прожект дахь дараахь объектууд кодын

цонхтой холбогддог. Үүнд :

Ажлын файл (ThisWorkbook)

Ажлын файл дахь ажлын хуудсууд (Sheet - үүд)

Ажлын файл дахь график хуудсууд (Graph-ууд)

VBA модулууд

Class модулууд (шинэ объект үүсгэхэд хэрэглэгддэг

тусгай модул)

Хэрэглэгчийн форм

Page 23: VBA lekts 1

Кодыг дараахь 4 төрлөөр бичиж болно. Үүнд:

Sub процедур

Function процедур

Property процедур (Class модулд хэрэглэгддэг тусгай процедур )

Зарлалт

Page 24: VBA lekts 1

Кодыг дараахь 3 замаар VBA модул руу нэмнэ. Үүнд:

Гараар оруулах

Макро бичигч ашиглан оруулах

Хуулж оруулах

Page 25: VBA lekts 1

Мөр хувааж бичих – пробел доогуур зураас +Enter

Кодын хэсгийг устгасан бол дахин сэргээхдээ Ctrl+Z

Кодыг биелүүлэхдээ F5 товч дарна

Run цэсний Run Sub/UserForm-г дарах

Зурагт цэсний Run Sub/UserForm-г дарах

Page 26: VBA lekts 1
Page 27: VBA lekts 1
Page 28: VBA lekts 1

Ажлын файлд ажлын хуудсаа сонгоно.

Макро бичигчээ идэвхжүүлнэ. Үүний тулд Developer цэснээс Record Macro г сонгоно.

Макроны тохируулгыг Ok дарж авна.

Үйлдлээ гүйцэтгэнэ.

Developer цэснээс Stop Recording сонгож бичилтээ зогсооно.

Page 29: VBA lekts 1

Жишээ нь Идэвхитэй байгаа хуудасны тохируулгыг хөндлөн

болгох үйлдлийг макро бичигчээр бичье. Үүний тулд:

1. Ажлын файл нээгээд ажлын хуудсаа идэвхижүүлнэ.

2. Developer цэснээс Record Macro-г идэвхижүүлнэ.

3. Excel Record Macro харилцах цонхонд Ок сонгоно.

4. Page LayOut –аас Page Setup-ийг сонгоод Orientation-г Landscape-ээр авна.

5. Developer цэсэнд Stop Recording сонгох, эсвэл цонхны доод хэсэг дэхь хөх өнгийн товчлуурыг дарна.

6. VBE рүү хандаж прожектийн цонхонд мудулын + тэмдгийг задлан Module1 – ийн кодын цонхыг харна.

7. Макро бичигчийн үр дүн доорхи байдалтай харагдана.

Page 30: VBA lekts 1

Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+Shift+W

'

With ActiveSheet.PageSetup

.PrintTitleRows = ""

.PrintTitleColumns = ""

End With

ActiveSheet.PageSetup.PrintArea = ""

With ActiveSheet.PageSetup

.LeftHeader = ""

.CenterHeader = ""

.RightHeader = ""

.LeftFooter = ""

.CenterFooter = ""

.RightFooter = ""

.LeftMargin = Application.InchesToPoints(0.708661417322835)

.RightMargin = Application.InchesToPoints(0.708661417322835)

Page 31: VBA lekts 1

.TopMargin = Application.InchesToPoints(0.15748031496063)

.BottomMargin = Application.InchesToPoints(0.196850393700787)

.HeaderMargin = Application.InchesToPoints(0.31496062992126)

.FooterMargin = Application.InchesToPoints(0.31496062992126) .PrintHeadings = False

.PrintGridlines = False

.PrintComments = xlPrintNoComments

.PrintQuality = 600

.CenterHorizontally = False

.CenterVertically = False

.Orientation = xlLandscape

.Draft = False

.PaperSize = xlPaperLetter

.FirstPageNumber = xlAutomatic

.Order = xlDownThenOver

.BlackAndWhite = False

.Zoom = 100

.PrintErrors = xlPrintErrorsDisplayed

.OddAndEvenPagesHeaderFooter = False

.DifferentFirstPageHeaderFooter = False

Page 32: VBA lekts 1

.ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With End Sub

Page 33: VBA lekts 1

Дүгнэлт :

Макро бичигч зарим үед үр дүнтэй арга биш юм.

Хэрэгцээгүй олон бичлэг үүсгэдэг.

Уншиж ойлгоход түвэгтэй байдал үүсдэг.

Хялбар энгийн биш

Page 34: VBA lekts 1

Хэрэггүй бичлэгүүдийг орхиод

Sub Macro1()

With ActiveSheet.PageSetup

.Orientation = xlLandscape

End With

End Sub

Ганц шинж чанар өөрчилж байгаа тул дараахь байдлаар бичиж болно.

Sub Macro1()

ActiveSheet.PageSetup.Orientation = xlLandscape

End Sub

Page 35: VBA lekts 1

xlLandScape хувьсагч 2, xlPortrait хувьсагч 1 гэсэн кодтой байдаг учраас дээрхи бичилтийг

болгож өөрчилж болно.

Sub Macro1()

ActiveSheet.PageSetup.Orientation = 2

End Sub

Page 36: VBA lekts 1

Макро бичигчийг хэрэглэхэд санаж байх зүйлүүд: Үүнд:

Энгийн макро, эсвэл иж бүрэн макронуудын жижиг хэсгүүдэд ашиглахад тохиромжтой

Бүх үйлдлүүдийг гараар бичиж чадахгүй нөхцөлд хэрэглэхэд тохиромжтой

Давталттай, утга олгох, нөхцөлт үйлдлүүдийг гүйцэтгэж чадахгүй

Харилцах цонхнуудыг харуулж чадахгүй

Зөвхөн Sub процедур үүсгэнэ. Function процедур үүсгэхгүй.

Бичигдсэн кодоос илүү командуудыг зайлуулах хэрэгтэй болдог.

Page 37: VBA lekts 1

Макро нь нүдний хаягийг абсолют байдлаар авдаг. Өөрөөр хэлбэл ямар нүд сонгогдоно тэр нүдийг л яг авдаг.

Харин харьцангуй хаяг авах шаардлагатай бол User Relative Reference сонголтыг хийнэ.

Page 38: VBA lekts 1

Ажлын хоосон файл нээгээд түүндээ 1-10

хүртэл тоонуудын нийлбэрийг sheet1-ийн B1

нүдэнд харуулах процедур бич

Page 39: VBA lekts 1

Sub niilber()

a1 = 1

s = 0

For i = 1 To 10

s = s + i

Next

Workbooks("book1").Worksheets("sheet1").Range("B1") = s

End Sub

Page 40: VBA lekts 1

Макро бичигч хэрэглэн хоосон ажлын файл ын b1:g1

нүднүүдэд ангийн оюутнуудынхаа нэрсээс бич.

Бичсэн нэрсээ арилгаад макрог дахин ажиллуулж

үр дүнг шалга.

Дээрхи нүдний аль нэгийг сонгон Миний нэр .......

гэсэн MsgBox харуул.

Page 41: VBA lekts 1

Энэ жишээнд макро бичигч нь нүдний абсолют

хаягийг авч байна.

Мөр Багана Абсолют хаяг

1 A R[0]C[-2]

2 B R[1]C[-1]

3 C R[2]C[0]

...