Mavzu:Formalar va boshqaruv obyektlari
Ob'ekt parametrlari
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.
Dostları ilə paylaş: |