Dasturlarning misollari Vba. Vba dasturlash asoslari va Microsoft Office ilovasida makrolarni yaratish


Download 0.9 Mb.
Pdf ko'rish
bet3/6
Sana06.04.2023
Hajmi0.9 Mb.
#1329594
1   2   3   4   5   6
Bog'liq
2.VBA dasturlash muhiti va unda ishlash

Ob'ekt o'zgaruvchisi butun ob'ektni, masalan, intervalli yoki ishchi varaqni ifodalovchi 
o'zgaruvchidir: Dim InputArea Range as Input. Ob'ektni o'zgaruvchiga tayinlash uchun Set: Set 
InputArea = Range ("C16: E16") kalit so'zidan foydalaning. 
Ichki funksiyalar 
VBA hisob-kitoblarni va operatsiyalarni soddalashtiradigan bir qator funksiyalarga ega. Misol 
uchun, mag'lubiyatni katta darajaga aylantirgan VBA UCase funksiyasi Excel UPPER 
funktsiyasiga teng. VBA ifodasida Excel funktsiyasidan foydalanish uchun funktsiya nomidan 
oldin quyidagi ifodani yozing: 
Application.WorksheetFunction 


Excel funktsiyalarini VBAda mos keladigan funktsiyalardan foydalana olmaysiz. Masalan, VBA 
Excel ROOT (SQRT) funktsiyasiga kirishga ruxsat bermaydi, chunki VBA bu funksiyaning o'z 
versiyasiga ega: Sqr. Shunday qilib, quyidagi so'zlar xato keltiradi: 
MsgBox Application.WorksheetFunction.Sqrt (123) 
MsgBox funksiyasi VBA-da eng foydali hisoblanadi. Boshqa narsalar bilan bir qatorda, dasturni 
to'xtatib turish va hisob-kitob yoki topshiriqning natijasini ko'rsatish uchun MsgBox funksiyasini 
har qanday vaqtda qo'shishingiz mumkin bo'lganligi uchun ajoyib nosozlik vositasi. MsgBox 
funksiyasi faqat qiymatni qaytaradi, balki foydalanuvchining muayyan xatti-harakatlarni amalga 
oshirishi mumkin bo'lgan dialog oynasini ham ko'rsatadi. MsgBox funktsiyasi tomonidan 
qaytarilgan qiymat foydalanuvchi tomonidan ko'rsatilgan so'rovga javobdir. MsgBox funksiyasi 
foydalanuvchi javobga muhtoj bo'lmasa ham, xabarni ko'rsatishga to'g'ri kelsa ham foydalanish 
mumkin. MsgBox funktsiyasining sintaksisi quyidagicha: 
MsgBox (xabar [, tugmalar] [, sarlavha] [, help_file, context]) 

Xabar (zarur) - dialog oynasida ko'rsatiladigan xabar. 

Tugmachalar (ixtiyoriy argument) - xabarlar oynasida qaysi tugmalar va 
belgilar (kerak bo'lsa) ko'rsatiladi. O'rnatilgan sobitlardan foydalaning 
(masalan, vbYesNo). 

Üstbilgi (ixtiyoriy mustaqil o'zgaruvchilar) xabarlar oynasining sarlavhasida 
ko'rsatilgan matndir. Odatiy bo'lib, Microsoft Excel matni ko'rsatiladi. 

Help_file (ixtiyoriy) - xabar qutisiga mos keladigan yordam faylining nomi. 

Kontekst (ixtiyoriy) yordam mavzusining kontekst identifikatoridir. Ko'rish 
uchun muayyan yordam mavzusini ifodalaydi. Agar kontekst argumenti 
ishlatilsa, help_file argumentini ham ishlatishingiz kerak. 

Olingan qiymatni o'zgaruvchiga belgilashingiz yoki vazifani belgilash operatoridan 
foydalanmasligingiz mumkin. Quyidagi misolda Ans o'zgaruvchiga natija beriladi. 

Ans = MsgBox ("Davom?", VbYesNo + vbQuestion, "Hisobot")
Ans = vbNo So'ngra Chiqish-ni tanlang 

Shuni e'tiborga olingki, ikkita o'rnatilgan sobit (vbYesNo + vbQuestion) summasi tugma 
argumentining qiymati sifatida ishlatiladi. Xabar oynasida "vbYesNo constant" tufayli 
ikkita tugma paydo bo'ladi: biri "Ha", ikkinchisi esa "No" belgisi bilan Argumentga 
vbQuestion qo'shilishi ham savol belgisini ko'rsatadi. Dastlabki so'zlar bajarilgandan 
so'ng, Ans o'zgaruvchisi egri va vbNo sobiklari bilan ifodalanadigan ikkita qiymatdan 
birini oladi. Ushbu misolda, Yo'q tugmasini bosgandan so'ng amaliyot jarayoni tugaydi. 

Ob'ektni yig'ish va boshqarish 

VBA ob'ektlar va kollektsiyalarni boshqarishni soddalashtiradigan ikkita dizaynni taklif 
etadi. With - End bilan birga bir ob'ekt ustida bir nechta operatsiyani bajarish imkonini 
beradi. Qanday ishlashini tushunish uchun, tanlangan ob'ektning oltita xususiyatlarini 
o'zgartiradigan quyidagi usulni tahlil qiling (bir qator obyekti tanlangan bo'lsa). 

Sub ChangeFontl ()
Selection.Font.Name = "Cambria"
Selection.Font.Bold = Haqiqiy Selection.Font.Italic = To'g'ri
Selection.Font.Size = 12
Selection.Font.Underline = xlUnderlineStyleSingle
Selection.Font.ThemeColor = xlThemeColorAccentl
End sub 



Ushbu protsedura bilan birga - End With tuzilishi bilan qayta yozish mumkin. Quyida 
keltirilgan protsedura oldingi ish bilan bir xil ishlaydi. 

Sub ChangeFont2 ()
Selection.Font bilan
Ism. "Cambria"
.Bold = To'g'ri
.Italic = To'g'ri
.Size = 12
.Underline = xlUnderlineStyleSingle
.Rekor = xlThemeColorAccentl
Bilan yakunlang
End sub 

To'plamdagi barcha narsalar ustida biror harakatni bajarishga qaror qilsangiz, yoki 
muayyan shartlar bajarilganda to'plamdagi barcha narsalarni baholashingiz va ishni 
bajarishingiz kerak. Ushbu For Every - Next konstruktsiyasini ishlatish uchun ideal holat. 
Qurilish sintaksisi: 

Har biri uchun elementIn to'plam 
[ko'rsatmalar
[ko'rsatmalar
Keyingi [ element

Masalan: 

Sub CountSheets ()
Parcha emas, ishchi varag'i
ActiveWorkbook.Worksheets da har bir element uchun
MsgBox Item.Name
Keyingi element
End sub 

Quyidagi misol faol oyna tashqari barcha oyna yopiladi: 

Sub Closelnactive ()
Yig'ilish kitobi Ish kitobi sifatida
Ish kitoblarida har bir kitob uchun
Agar Book.Name<> Keyinchalik Book.Close nomli ActiveWorkbook.Name
Keyingi kitob
End sub 

Kod bajarilishini nazorat qilish 

Ba'zi VBA protseduralari kodning birinchi qatorlaridan boshlanadi. Shu bilan birga, 
ba'zida operatsiyalar ketma-ketligini nazorat qilish, alohida ko'rsatmalarga o'tish, ayrim 
buyruqlarni qayta bajarish va protsedura bo'yicha bajariladigan keyingi harakatlarini 
aniqlash uchun shartlarni tekshirish kerak. 

GoTo operator dasturi progressini maxsus tarzda belgilanadigan yangi yo'riqnomaga 
yo'naltiradi (yo'riqnoma bilan ko'rsatib o'tilgan nuqta bilan yakunlangan matn satri yoki 
son bilan tugaydigan raqam). Quyidagi protsedura foydalanuvchi nomini olish uchun 
VBA InputBox funksiyasini qo'llaydi. Agar foydalanuvchi nomi Govarddan farq qilsa, 
protsedura WrongName yorlig'i bilan yakunlanadi, u erda tugaydi. Aks holda, protsedura 
qo'shimcha operatsiyalarni bajaradi. Chiqish pastki bayonoti protsedurani tugatadi. 

Sub GoToDemo ()
UserName = InputBox ("Ismingizni kiriting:")
Agar foydalanuvchi nomi bo'lsa<> "Xovard" Keyin GoTo WrongName
MsgBox ("Salom, Xovard ...")
"- [Bu erda qo'shimcha kod kiritiladi] -
Chiqish sub
Noto'g'ri nomi:


MsgBox "Kechirasiz, faqat Xovard bu amaliyotni bajarishi mumkin."
End sub 

Aslida, GoTo bayonoti faqat xatoni qo'lga olish uchun talab qilinadi (yuqoridagi kod 
ishlatilmaydigan muvaffaqiyatsiz misoldir). 

VBA yo'riqnomasini guruhlash uchun "If-Then" qurilishi ko'pincha qo'llanilishi mumkin. 

Agar holati Keyin ko'rsatmalar

Misol uchun 

Sub GreetMe ()
Vaqt bo'lsa< 0.5 Then 
MsgBox "Xayrli tong"
O'z vaqtida\u003e = 0,5 va vaqt< 0.75 Then 
MsgBox "Xayrli kun"
Boshqa
MsgBox "Yaxshi oqshom"
Agar tugatilsin
End sub 

VBA, Excelda ishlatiladigan bir tarix va vaqt tizimidan foydalanadi. Kunning soati 
parchalanadigan raqam sifatida ifodalanadi, masalan, peshin soati 0,5 ga teng. 0.75 
qiymati 18:00 vaqtni - kunning uch choragini va kun kechqurun kiradigan paytni 
anglatadi. Agar bu holda ichki tuzilmalar juda og'ir bo'lsa. Shuning uchun ularni oddiy 
ikkilik qarorlar qabul qilish uchun ishlatish tavsiya etiladi. Agar uch yoki undan ortiq 
variantni tanlash kerak bo'lsa, unda tanlash holatini ko'rsatish tavsiya etiladi. 

Quyidagi protsedura joriy kunning shanba yoki yakshanba ekanini (hafta yoki kunduz 
funktsiyasi 1 yoki 7 qiymatini qaytaradi) aniqlash uchun ishlatiladigan VBA WeekDay 
funktsiyasidan foydalanadi. Keyin tegishli xabar ko'rsatiladi. 

Sub GreetUserlO
Case weekday ni tanlang (hozir)
1, 7-savol
MsgBox "Bu hafta oxiri"
Boshqa holatlar
MsgBox "Bu hafta oxiri emas"
Tugatish tanlang
End sub 

VBA tarjimoni "True" holati topilmaguncha Applications Case ko'rinishidan chiqadi. 
Shuning uchun, maksimal samaradorlik uchun, birinchi navbatda, eng mumkin bo'lgan 
vaziyatni tekshirish kerak. 


Download 0.9 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling