MVP logo
    Your browser: , Version
Thursday, 28.03.2024, 7:47 PM
Hello! Guest | Group Guest | RSS
Home | Fayl Kataloqu | Profile  | Login
Saytın menyusu

Kateqoriyalar
VBA [21]
Formullar [31]
Massiv Formullar [12]
Ümumi [4]

Sorğu
"Excel"in hansı versiyasını istifadə edirsiniz?
Səsvermə sayı: 572

Statistika

Total online: 1
Guests: 1
Users: 0

Müsabiqələr


"Macros"-lar necə yazılır?
03.01.2012, 7:38 PM

Macros Nədir?

Macros - Visual Basic dilində yazılmış proqramdır. Bu proqram dilini bilməklə siz bir çox monoton (darıxdırıcı) və dəyərli vaxtınızın xeyli hissəsini alan işlərinizi avtomatlaşdırmaq imkanına sahib olacaqsınız. Əgər nəzərə alsaq ki, vaxt puldur onda ən azından siz pullarınızı itirməmiş olursunuz. Bununla yanaşı bu yolla qənaət etdiyinz vaxtı (pulları) digər sahələrin inkişafına nəzarətə sərf edə (xərcləyə) bilərsiniz.

Makrosu kimlər yaza bilər?

a)Təkcə proqramçılar

b)Yoxsa istəyən hər kəs bunu bacara bilər

              Cavab əlbətdə ki, çox sadədir istəyən hər bir kəs bunu bacara bilər. Proqram dilinin çoxfunksiyalılığı sizə mürəkkəb görsənməsin. Ən azından sizə lazım olan bazis bilikləri əldə etməklə işinizdəki müəyyən məsələləri avtomatlaşdıra bilərsiniz. Zaman keçdikcə isə əvvəllər sizə mürəkkəb (anlaşılmaz) görünən məqamlar indi çox sadə bir əməliyyat kimi görünməsinin şahidi olacaqsınız.

Bəs bu proqram dilini öyrənmək bizə nə qazandıracaq? Birincisi- ən önəmlisi dəyərli olan vaxtımızı qazanırıq, ikincisi isə- yeknəsəq işlərimizdən birdəfəlik azad oluruq.

Bəs bu əldə edəcəyimiz bazis biliklərə nələr daxildir? və ilkin olaraq nələri bilmək lazımdır?

*İlk olaraq makrosun harada və necə yazlmasnı bilməliyik. Bunun üçün excel səhifəsini yükləyirsiniz sonra "Alt+F11” sıxılır, daha sonra isə alətlər panelindən "İnsert/Module” seçməklə modulumuzu əlavə edirik. Yazacağımız makros bu modulun içərisində olacaq. Modulumuz artıq hazırdır indi isə "Excel” proqramında ilk "VBA”-mızı (Macros-u) yaza bilərik. İlk olaraq yazacağımız makrosun adını təyin etməliyik. Bunun üçün "sub” yazırıq sonra "adı” təyin edirik və mötərizə açılır-bağlanır daha sonra "Enter” sıxılır (bu zaman "End sub” yazısı avtomatik olaraq görsənir) və budur nəhayət kodumuzu yaza bilərik. Bu aşağıda göstərilən strukturda həyata keçirilir.

sub  Salam_VBA()

Msgbox "Hello MyExcelWorld”

End sub

Burada "Salam_VBA”- makrosumuzun adını, "Msgbox "Hello MyExcelWorld””- VBA kodumuzu "End sub”-isə prosesin başa çatmasını göstərir. Bu VBA kodunu icra etmək üçün "Alt+F8” sıxılır açılan pəncərədən "Macro name”-də "Salam_VBA” görsənəcək və "Run” sıxmaqla bu kodu icra etmiş oluruq.

*İkincisi-VBA-da hazırda və yaxud əvvəl yazdığımız kodların icra edilməsi. Exceldə VBA redaktorunda mövcud olan əvvəlcədən yazılmış hər hansı bir kodu işə salmaq üçün "Alt+F8” sıxılır sonra icra olunacaq "VBA” komandası seçilərək Run edilir. Digər usul isə "Alt+F11” sıxılaraq icra edəcəyiniz "VBA” kodu activləşdirilməsi sonra isə "F5”-in sıxılmasıdır, əgər ardıcıllığı addım-addım görmək istəyirsinizsə onda "F8”-i hər dəfə sıxmaqla prosesi izləyə bilərsiniz. Bundan başqa "Alt+F8” vasitəsilə açılan pəncərədən də  "Step Into”-ya keçərək "F8”-lə prosesin gedişatını izləmək mümkündür. Addım-addım prosesin icrası sizə hansı kodun hansı əməliyyatı icra etdiyini izləməyə imkan verəcək.

*Üçüncüsü-bir neçə bazis əməliyyatları yerinə yetirən kodlarla tanışlıq. Bu bazis macro korlara misal olaraq: Range(), Cells(), Msgbox, Offset(),PasteSpecial, Call, If … Then, For Each ... in ..., Exit sub və s göstərmək olar.

Range()-vasitəsilə siz istədiyiniz diopozonları Select, Copy, Cut, Clear və s edə bilərsiniz (məsələn; "Range("A1”).Select” yazmaqla).

Cells()-vasitəsilə isə siz yuxarıda Range() üçün sadalanan əməliyyatları hər hansı bir xana üçün tətbiq edə bilərsiniz. (məsələn: "Cells(1,1).Copy” yazmaqla)

             Call-Mövcud excel səhifənizdə əvvəlcədən yazılmış olan hər hansı bir makrosu çağırmaq (işə salmaq) üçün istifadə olunur. (məsələn: ”Call Salam_VBA” yazmaqla)

             If … Then- isə müəyyən şərtlərə əməl edilməsi yolu ilə prosesin ardıcıllığının müəyyən edilməsidir. Bu kodun sonluğu "End if”-lə yekunlanır. Msələn:

 If  Range("A1”).Value=1 Then

Msgbox "Hello MyExcelWorld”

End if

            For Each ... in ...-bu kod isə prosesin dövrü olaraq təkrarlanması zamanı istifadə olunur. Yəni məsələn "Sheet1”-dən başlayaraq "Sheet10”-a kimi müəyyən eyni bir əməliyyatı yerinə yetirmək istəyirsiniz. Onda bu koddan istifadə olunur (prosesin hamısını ayrıca "Sheet1” sonra "Sheet2” … "Sheet10” üçün bir-bir yazmamaq üçün).Bunun isə sonluğu "Next”-dir (yəni məsələn növbəti səhifəyə keç).  Məsələn bütün səhifələrdə "A1” xanasındakı məlumarları silmək lazımdır. Bunun üçün:

For Each Sehife in Worksheets            ‘Bu setrdeki emeliyyat her bir sehifenin nezere alinmasi uchundur

Sehife.Activate                                     ‘Bu yazilish sehifeni aktivleshdirir

Range("A1”).Clear                               ‘Bu ise "A1”-xanasindaki melumatlari silir (Delete edir)

Next Sehife                                           ‘Neyayet "Next” komandasi ise burada sehifede bir dovr emeliyyati

                                                               ‘basha vurduqdan sonra diger sefifeye kechmeye imkan verir

            Exit sub-bu kod isə daxil edildiyi yərə qədər əməliyyatın icra edilməsinə imkan verir. Məsələn müəyyən şərtlərin ödənilməməsi şəraitində siz əməliyyatın dayanacağını bildirən pəncərənin peyda olması və sonra prosesin dayanmasını bu kod vasitəsilə icra edə bilərsiniz. Məsələn:

If Range("A1") = 1 Then  ‘ Burada sherte gore "A1” xanasinda 1 yazilibsa onda "Shert odenmir" yazisi chixir sonra emeliyyat dayanir

MsgBox "Shert odenmir"    ‘Bildirish penceresi

Exit Sub                          ‘Emeliyyat dayandirilir

Else                                ‘Bu ise eger ele deyilse onda novbeti setrdeki Range("A1”).Copy-emeliyyatinina kechir.

Range("A1").Copy

End If

Gördüyünü kimi bu cür sadə bir prosesi bilməklə siz artıq ilkin proqramınızı yazmağa hazırsınız. Uğurlar!

Category: VBA | Added by: Useful
Views: 2757 | Downloads: 0 | Rating: 0.0/0
Total comments: 0
Register to add comments
[ Register | Login ]
Login

Search

Useful Sites
  • www.planetaexcel.ru
  • www.programmersforum.ru
  • www.mrexcel.com
  • www.excelworld.ru
  • www.cyberforum.ru
  • www.excelvba.ru
  • www.muhasib.az

  • Visitors
    free counters


    MyExcelWorld © 2024
    Site managed by uCoz