vba lekts 1

Post on 09-Aug-2015

47 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

VBA

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

Excel дээрх Object Module нь

◦ Worksheets

◦ Charts

◦ Pivot table

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

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

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

биелүүлнэ.

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

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

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

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

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

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

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

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

Ж- нь

Sub Test()

sum=10+1

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

End Sub

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

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

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

Ж – нь

Function AddTwo(arg1,arg2)

AddTwo=arg1+arg2

End Function

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

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

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

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

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

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

Application.Workbooks(“Book1.xlsx”)

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

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

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

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

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

Range(“A1”)

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

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

Ж-нь

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

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

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

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

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

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

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

ашиглана.

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

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

Ж-нь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

сонгоно.

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

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

ALT+F11

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

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

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

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

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

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

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

Ctrl + R дуудна.

Hide нууна.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

хэрэглэнэ.

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

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

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

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

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

VBA модулууд

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

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

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

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

Sub процедур

Function процедур

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

Зарлалт

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

.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

.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

Дүгнэлт :

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

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

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

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

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

Sub Macro1()

With ActiveSheet.PageSetup

.Orientation = xlLandscape

End With

End Sub

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

Sub Macro1()

ActiveSheet.PageSetup.Orientation = xlLandscape

End Sub

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

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

Sub Macro1()

ActiveSheet.PageSetup.Orientation = 2

End Sub

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

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

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

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

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

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

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

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

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

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

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

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

Sub niilber()

a1 = 1

s = 0

For i = 1 To 10

s = s + i

Next

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

End Sub

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

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

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

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

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

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

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

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

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

1 A R[0]C[-2]

2 B R[1]C[-1]

3 C R[2]C[0]

...

top related