Növbəti vba excel üçün növbətiyə keçin. VBA-da loop ifadələri. "Depozit üzrə gəlir" layihəsi

VBA proqramının eyni hərəkətləri ardıcıl olaraq bir neçə dəfə yerinə yetirməsi tələb olunduğu vəziyyətlər var (yəni, eyni kod blokunu bir neçə dəfə təkrarlayın). Bu, VBA döngələrindən istifadə etməklə edilə bilər.

Visual Basic-də "for" döngə bəyanatı

Döngə bəyanatının strukturu üçün Visual Basic-də iki formadan birində təşkil edilə bilər: döngə kimi Üçün... Sonrakı və ya bir döngə kimi Hər biri üçün.

"For... Next" Döngəsi

Velosiped Üçün... Sonrakı verilmiş diapazondan ardıcıl olaraq dəyərlər alan dəyişəndən istifadə edir. Dəyişənin dəyərinin hər dəyişməsi ilə dövrə gövdəsində olan hərəkətlər yerinə yetirilir. Bunu sadə bir nümunədən başa düşmək asandır:

i üçün = 1 - 10 Cəmi = Ümumi + iArray(i) Sonrakı i

Bu sadə döngədə Üçün... Sonrakı dəyişən istifadə olunur i, ardıcıl olaraq 1, 2, 3, ... 10 dəyərlərini qəbul edir və bu dəyərlərin hər biri üçün dövrə daxilində VBA kodu yerinə yetirilir. Beləliklə, bu döngə massivin elementlərini cəmləşdirir iArray dəyişəndə Ümumi.

Yuxarıdakı misalda, dəyişəni artırmaq üçün döngə artım addımı göstərilməyib i 1-dən 10-a qədər standart artım 1 . Bununla belə, bəzi hallarda döngə üçün digər artım dəyərlərindən istifadə etmək tələb olunur. Bu açar sözlə edilə bilər addım, aşağıdakı sadə nümunədə göstərildiyi kimi.

d = 0-dan 10-a qədər addım üçün 0.1 dCəmi = dCəmi + d Sonrakı d

Yuxarıdakı nümunədə artım addımı bərabər olduğundan 0.1 , sonra dəyişən dCəmi Döngənin hər iterasiyası üçün 0.0, 0.1, 0.2, 0.3, ... 9.9, 10.0 dəyərlərini alır.

VBA-da döngə addımını müəyyən etmək üçün mənfi dəyərdən istifadə edə bilərsiniz, məsələn:

i = 10-dan 1-ə qədər -1 üçün iArray(i) = i Sonrakı i

Artım buradadır -1 , belə ki, dəyişən i döngənin hər iterasiyası ilə 10, 9, 8, ... 1 dəyərlərini alır.

Hər Döngü üçün

Velosiped Hər biri üçün dövrə kimi Üçün... Sonrakı, lakin sayğac dəyişəni üçün dəyərlər ardıcıllığı üzərində təkrarlamaq əvəzinə, döngə Hər biri üçün müəyyən edilmiş obyektlər qrupundan hər bir obyekt üçün hərəkətlər toplusunu yerinə yetirir. Aşağıdakı nümunədə, bir döngə istifadə edərək Hər biri üçün cari Excel iş kitabındakı bütün vərəqləri sadalayır:

İş vərəqlərindəki hər bir wSheet üçün iş vərəqi kimi wSheet'i söndürün MsgBox "Tapılan vərəq:" & wSheet.Adı Sonrakı wSheet

Döngə fasilə bəyanatı "Çıxış üçün"

Operator Üçün çıxın döngəni qırmaq üçün istifadə olunur. Kodda bu ifadəyə rast gələn kimi proqram dövrənin icrasını bitirir və bu dövrədən dərhal sonra koddakı ifadələrin icrasına keçir. Bu, məsələn, massivdə müəyyən bir dəyəri axtarmaq üçün istifadə edilə bilər. Bunun üçün massivin hər bir elementinə bir döngə vasitəsilə baxılır. Tələb olunan element tapılan kimi, qalanları nəzərdən keçirməyə ehtiyac yoxdur - döngə kəsilir.

Operator tətbiqi Üçün çıxın aşağıdakı misalda nümayiş etdirilir. Burada dövrə massivdəki 100 girişi təkrarlayır və hər birini dəyişənin dəyəri ilə müqayisə edir. dVal. Uyğunluq tapılarsa, döngə qırılır:

i üçün = 1-dən 100-ə qədər Əgər dValues(i) = dVal Onda IndexVal = i Sona Çıxın Əgər Növbətidirsə i

Visual Basic-də while loop edin

Velosiped Edərkən göstərilən şərt yerinə yetirilənə qədər kod blokunu icra edir. Aşağıda bir prosedur nümunəsidir alt, hansı dövrün köməyi ilə Edərkən 1000-dən çox olmayan Fibonacci nömrələri ardıcıl olaraq göstərilir:

"Alt proseduru 1000-dən çox olmayan Fibonacci ədədlərini çıxarır Sub Fibonacci() Dim i As Integer "ardıcıllığında elementin mövqeyini göstərmək üçün sayğac Dim iFib As Integer "ardıcıllığının cari dəyərini saxlayır Dim iFib_Next As Integer "saxlayır. ardıcıllığın növbəti dəyəri Dim iStep kimi Tam ədəd "növbəti artımın ölçüsünü saxlayır" i və iFib_Next dəyişənlərini işə salın i = 1 iFib_Next = 0 "Cari Fibonacci sayı"nın dəyəri 100-ü keçənə qədər Do While dövrəsi icra ediləcək iFib_Next olarkən< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Verilmiş nümunədə şərt iFib_Next< 1000 dövrün əvvəlində yoxlanılır. Buna görə, əgər ilk dəyər iFib_NextƏgər 1000-dən çox olsaydı, döngə heç vaxt icra olunmazdı.

Döngəni həyata keçirməyin başqa bir yolu Edərkən- şərti döngənin əvvəlinə deyil, sonuna qoyun. Bu halda, şərtin yerinə yetirilib-yetirilməməsindən asılı olmayaraq, dövrə ən azı bir dəfə yerinə yetiriləcəkdir.

Sxematik olaraq belə bir dövrə Edərkən sonunda yoxlanılacaq şərtlə belə görünəcək:

Do ... iFib_Next ikən Döngə edin< 1000

Visual Basic-də Döngü qədər edin

Velosiped Qədər edin dövrəyə çox bənzəyir Edərkən: dövrənin gövdəsindəki kod bloku göstərilən şərt yerinə yetirilənə qədər təkrar-təkrar yerinə yetirilir (şərti ifadənin nəticəsi Doğru). Növbəti prosedurda alt dövrü istifadə edərək Qədər edin sütundakı bütün xanalardan dəyərləri əldə edin A sütunda boş bir xana qalana qədər iş vərəqi:

IRow = 1 IsEmpty (Cells(iRow, 1)) "Cari xananın dəyəri dCellValues ​​dCellValues(iRow) = Cells(iRow, 1) massivində saxlanılır. Dəyər iRow = iRow + 1 Döngü

Yuxarıdakı nümunədə şərt IsEmpty(Hüceyrələr(iRow, 1)) strukturun başlanğıcında yerləşir Qədər edin, beləliklə, ilk alınan xana boş deyilsə, dövrə ən azı bir dəfə yerinə yetiriləcək.

Bununla belə, döngə nümunələrində göstərildiyi kimi Edərkən, bəzi hallarda şərti ifadənin ilkin nəticəsindən asılı olmayaraq dövrənin ən azı bir dəfə yerinə yetirilməsi zəruridir. Bu halda, şərti ifadə döngənin sonunda belə yerləşdirilməlidir:

Edin ... Boş olana qədər Döngə edin(Cells(iRow, 1))

Döngü ifadələri

VBA-da Sayğaclı (parametrik) və şərti (itererasiya) olan döngələrin iki əsas növü var.

Sayğaclı döngələr, müəyyən bir hərəkəti bir neçə dəfə yerinə yetirmək lazım olduğu hallarda istifadə olunur.

Şərti döngələr proqramdakı bəzi hərəkətlərin müəyyən bir şərt yerinə yetirilənə qədər təkrarlanması lazım olduqda istifadə olunur.

Parametrli dövrələrÜçün... Sonrakı

Dövr strukturu:

üçün Loop_Parameter = İlkin_Dəyər Kimə Son_Dəyər

[Addım Addım]

Operatorlar

[çıxış]

Sonrakı [Loop_Parameter]

harada üçün açar söz VBA (dan), dövrün başlanğıcını bildirən;

loop_parameter dəyişəni dövrə sayğacı kimi müəyyən edilir;

Başlanğıc_Dəyər dövrü parametrinin ilkin qiymətini təyin edən ədəd;

Açar sözə VBA (əvvəl) bölmək

Başlanğıc_Dəyər və Son_Bilik;

End_Value döngə parametrinin dəyərini təyin edən ədəd,

Dövrün bitdiyi vaxt;

Addım açar sözü VBA (addım) üçün istifadə olunur

Döngü addım tapşırıqları, isteğe bağlı arqument;

Addım, dövr addımını təyin edən bir rəqəmdir, yəni. olan dəyər

Parametrin dəyərini artırır (və ya azaldır).

Hər addımda velosiped sürün. Bu rəqəm ola bilər

mənfi;

Üçün çıxın Döngədən erkən çıxış operatoru (istəyə görə);

Sonrakı açar söz VBA (növbəti) işarə edir

Dövrün sonu.

Velosiped işi:

Addım 1 Əvvəlcə loop parametri müəyyən edilir və bu dəyişənin başlanğıc və son dəyərləri hesablanır və saxlanılır.

Addım 2 Döngə parametrinə ilkin dəyər təyin edilir.

Addım 3 Döngə parametrinin başlanğıc dəyəri son dəyərlə müqayisə edilir.

Döngə parametri son qiymətdən böyükdürsə, proqram dərhal dövrədən çıxır və döngədən sonra gələn kod xəttinə keçir.

Addım 4 Döngə gövdəsi yerinə yetirilir.

5-ci addım Döngənin gövdəsini icra etdikdən sonra növbəti qiymət dövrə parametrinə təyin edilir. 3-cü addıma keçin.

Qeyd.

1. Açar söz istifadə olunarsa addım , onda dövr parametri bu sözdən sonra göstərilən nömrəyə uyğun olaraq dəyişir. Əgər söz addım yoxdur, addım dəyəri birə bərabərdir.

Misal 1

I üçün = 0-dan 10-a qədər 2-ci addım (Dəyər I 2 artacaq)

2. Üçün…Növbəti dövrə hər hansı bir vəziyyətə çatdıqda vaxtından əvvəl dayandırıla bilər. Bunu etmək üçün, loopda düzgün yerə operatoru yerləşdirmək lazımdırÜçün çıxın.

Misal 2

Dim S Tam Ədədi

Dim j Tam ədəd kimi

S=2

j = 1-dən 10-a qədər

S = S + j

Əgər S > 6 O zaman

Üçün çıxın (Əgər dəyər varsa, döngədən çıxın S > 6)

Bitərsə

Növbəti j

MsgBox(S)

Şərti Döngələr (İterativ)

Əgər hansısa hərəkəti (bir neçə hərəkəti) dəfələrlə yerinə yetirmək lazımdırsa, lakin neçə dəfə olduğu əvvəlcədən bilinmirsə və bu, hansısa şərtdən asılıdırsa, onda ilkin şərt və ya son şərti olan dövrədən istifadə etməlisiniz.

VBA-da iki əsas dövrə var DO...LOOP açar sözlə daxil edilmiş şərtlə ikən , və açar sözlə təqdim edilən şərtlə qədər . Hər ikisi ilkin və ya sonrakı şərt ola bilər.

Sintaksis:

harada açar söz (edin);

ikən açar söz (hələ);

qədər açar söz (nə qədər);

döngə dövrün sonunu göstərən açar söz;

<условие>doğruluğu yoxlanılan məntiqi ifadə

Döngə gövdəsinin hər icrasının əvvəlində;

<тело_цикла>operatorların ixtiyari ardıcıllığı;

Do...Tikinti zamanı oxuyur: şərt yerinə yetirildikdə edin. Dizaynda Et ... Üçün isə

The Do ... Konstruksiya oxuyana qədər: şərt yerinə yetirilənə qədər davam edin. Dizaynda Edin ... qədər addımı artırmaq üçün xüsusi operator yazmalısınız, çünki dizayndan fərqli olaraq bundaüçün , bu avtomatik olaraq edilmir.

Açar sözdən sonra yazılmış şərt qədər , hər iterasiyanın sonunda yoxlanılır (döngü gövdəsinin icrasından sonra). Qeyd edək ki, burada döngədə olduğu kimi işləmir ikən . Əgər şərt doğrudursa ( Doğru ), sonra döngə bitir. Şərt yerinə yetirilmirsə (yalandır Yalan ), sonra döngə gövdəsi yenidən yerinə yetirilir.

Misal 1

Problemin formalaşdırılması. Alt proqram prosedurundan istifadə edərək sonlu sıraların cəmini hesablayın.

Tapşırıqların icrası texnologiyası:

1. İlkin məlumatlar: mən Z

Nəticə: S  R .

2. Layihənin standart modulunda ilkin şərti olan dövrədən istifadə edərək aşağıdakı istifadəçi prosedurunu yazın isə:

subsumma()

Dim S Tam Ədədi

Tam ədəd kimi Dim

S=0

i = 1

i zamanı edin<= 10

S=S+i^2

i = i + 1

döngə

MsgBox(S)

son alt

3. Layihənin standart moduluna ilkin şərti olan dövrədən istifadə edərək aşağıdakı istifadəçi prosedurunu yazın qədər:

subsumma()

Dim S Tam Ədədi

Tam ədəd kimi Dim

S=0

i = 1

i > 10-a qədər edin

S=S+i^2

i = i + 1

döngə

MsgBox(S)

son alt

4 Layihənin standart modulunda son şərti olan dövrədən istifadə edərək aşağıdakı istifadəçi prosedurunu yazın isə:

subsumma()

Dim S Tam Ədədi

Tam ədəd kimi Dim

S=0

i = 1

S=S+i^2

i = i + 1

Loop isə i<= 10

MsgBox(S)

son alt

5 Layihənin standart moduluna son şərti olan dövrədən istifadə edərək aşağıdakı istifadəçi prosedurunu yazın qədər:

subsumma()

Dim S Tam Ədədi

Tam ədəd kimi Dim

S=0

i = 1

S=S+i^2

i = i + 1

i > 10-a qədər dövrələyin

MsgBox(S)

son alt

Kod blokunu bir neçə dəfə yerinə yetirməli olduğunuz bir vəziyyət ola bilər. Ümumiyyətlə, ifadələr ardıcıllıqla yerinə yetirilir: funksiyada birinci ifadə əvvəlcə, sonra ikinci və s.

Proqramlaşdırma dilləri daha mürəkkəb icra yollarını təmin edən müxtəlif idarəetmə strukturlarını təmin edir.

Döngə bəyanatı bizə bir bəyanatı və ya ifadələr qrupunu dəfələrlə yerinə yetirməyə imkan verir. Aşağıda VBA-da loop ifadəsinin ümumi görünüşü verilmişdir.

VBA loop tələblərini idarə etmək üçün aşağıdakı növ döngələri təmin edir. Onların təfərrüatlarını yoxlamaq üçün aşağıdakı linklərə klikləyin.

döngə üçün

For döngəsi, tərtibatçıya müəyyən bir neçə dəfə yerinə yetirilməli olan dövrəni səmərəli şəkildə yazmağa imkan verən təkrar nəzarət strukturudur.

Sintaksis

Aşağıda VBA-da for loopunun sintaksisi verilmişdir.

Sayğac üçün = start Bitirmək üçün ...... .... Sonrakı

axın diaqramı

Aşağıda Loop rejimində idarəetmə axını var -

  • İlk addım atılır. Bu addım istənilən döngə nəzarət dəyişənlərini işə salmağa və addım sayğac dəyişənini artırmağa imkan verir.
  • İkincisi, vəziyyət qiymətləndirilir. Doğrudursa, döngənin gövdəsi yerinə yetirilir. Əgər yalan olarsa, dövrənin gövdəsi yerinə yetirilmir və idarəetmə axını For döngəsindən dərhal sonra növbəti ifadəyə davam edir.
  • For döngəsi yerinə yetirildikdən sonra idarəetmə axını növbəti ifadəyə keçir. Bu bəyanat istənilən döngə nəzarət dəyişənlərini yeniləməyə imkan verir. Addım sayğacının dəyərinə əsasən yenilənir.
  • Hazırda vəziyyət yenidən qiymətləndirilir. Əgər bu doğrudursa, dövrə yerinə yetirilir və proses təkrarlanır (dövrənin gövdəsi, sonra addım artır, sonra isə yenidən şərt). Şərt yanlış olduqdan sonra For döngüsü bitir.

misal

Bir düymə əlavə edin və aşağıdakı funksiyanı əlavə edin.

Private Sub Constant_demo_Click() Dim a As Tam Ədədi a = 10 üçün i = 0 Addım 2 üçün MsgBox "Dəyər i-dir: " & i Növbəti Son Alt

Yuxarıdakı kod tərtib edildikdə və icra edildikdə, aşağıdakı nəticəni verir.

i dəyəri: 0
Dəyər i-dir: 2
Dəyər i-dir: 4
i dəyəri: 6
Dəyər i-dir: 8
i dəyəri: 10

Bir neçə dəfə ifadələr ardıcıllığını yerinə yetirir və döngə dəyişənini idarə edən kodu qısaldır.

üçün... döngə

For every loop massiv və ya kolleksiyadakı hər bir element üzrə bəyanat və ya ifadələr qrupunu yerinə yetirmək üçün istifadə olunur.

Hər bir döngə üçün Döngü üçün oxşardır; lakin, dövrə massiv və ya qrupdakı hər bir element üçün yerinə yetirilir. Buna görə də, bu döngə tipində addım sayğacı mövcud olmayacaq. Əsasən massivlərlə və ya obyektlərin kontekstində istifadə olunur fayl sistemi rekursiv işləmək.

Sintaksis

Aşağıda VBA-da For Every Loop-un sintaksisi verilmişdir.

Qrupdakı hər bir element üçün .... Sonrakı

misal

Private Sub Constant_demo_Click() "meyvələr bir massivdir meyvələr = Array("alma", "portağal", "albalı") Meyvə adlarını Variant kimi tutqun "hər bir dövrə üçün istifadə edərək təkrarlayan. Meyvələrdəki hər bir element üçün meyvə adları = meyvə adları & Maddə & Chr(10) Növbəti Mesaj qutusu meyvə adları Son Alt

Yuxarıdakı kod icra edildikdə, o, bütün meyvə adlarını hər sətirdə bir elementlə çap edir.

alma
narıncı
albalı

Bu, qrupda ən azı bir element olduqda yerinə yetirilir və qrupdakı hər bir element üçün təkrarlanır.

while..wend loop

In a While ... Wend döngüsü, şərt True olarsa, Wend açar sözü ilə qarşılaşana qədər bütün ifadələr icra olunur.

Şərt yanlışdırsa, dövrə başa çatır və idarəetmə Wend açar sözündən sonra növbəti ifadəyə keçir.

Sintaksis

Aşağıda VBA-da While..Wend döngəsinin sintaksisi verilmişdir.

Vəziyyət(lər) isə ... Wend

axın diaqramı

misal

Private Sub Constant_demo_Click() Dim Counter: Sayğac = 10 Sayğac zamanı< 15 " Test value of Counter. Counter = Counter + 1 " Increment Counter. msgbox "The Current Value of the Counter is: " & Counter Wend " While loop exits if Counter Value becomes 15. End Sub

Yuxarıdakı kod icra edildikdə, mesaj sahəsində aşağıdakıları çıxaracaq.

Sayğacın cari dəyəri: 11
Sayğacın cari dəyəri: 12
Sayğacın cari dəyəri: 13
Sayğacın cari dəyəri: 14
Sayğacın cari dəyəri: 15

Bu, döngə gövdəsini icra etməzdən əvvəl vəziyyəti yoxlayır.

do..while loop

Şərt doğru olarkən bir sıra ifadələri təkrarlamaq istədikdə do...while döngəsi istifadə olunur. Vəziyyəti döngənin əvvəlində və ya sonunda yoxlamaq olar.

Sintaksis

Aşağıda VBA-da Do...While dövrəsinin sintaksisi verilmişdir.

Do while şərti ...... Loop

axın diaqramı

misal

Aşağıdakı misal dövrənin əvvəlindəki vəziyyəti yoxlamaq üçün Do ... while loopundan istifadə edir. Döngənin içindəki ifadələr yalnız şərt True olduqda yerinə yetirilir.

Private Sub Constant_demo_Click() i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

i dəyəri: 1
i-nin dəyəri: 2
i-nin dəyəri: 3
i-nin dəyəri: 4
i-nin dəyəri: 5

Alternativ sintaksis

Döngənin sonunda vəziyyəti yoxlayan Do ... while döngüsü üçün alternativ sintaksis də var. Bu iki sintaksis arasındakı əsas fərq aşağıdakı misalda izah olunur.

Do ...... ... Döngə şərti

misal

Aşağıdakı misal dövrənin sonundakı vəziyyəti yoxlamaq üçün Do ... while döngəsindən istifadə edir. Döngə daxilindəki ifadələr şərti False olsa belə, ən azı bir dəfə yerinə yetirilir.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "i-nin dəyəri: " & i Döngə< 3 "Condition is false.Hence loop is executed once. End Sub

Yuxarıdakı kod icra edildikdə, o, aşağıdakı çıxışı mesaj qutusunda çap edir.

i-nin dəyəri: 11

do..Şərt True olduğu müddətdə ifadələr icra olunacaq. (yəni) şərt False olana qədər döngə təkrarlanmalıdır.

do..intil loop

Şərt yalan olarkən bir sıra ifadələri təkrarlamaq istədikdə Do ... intil döngəsi istifadə edilməyəcək. Vəziyyəti döngənin əvvəlində və ya sonunda yoxlamaq olar.

Sintaksis

Aşağıda VBA-da Do..Until döngəsinin sintaksisi verilmişdir.

Şərt qədər edin ... ... Döngə

axın diaqramı

misal

Aşağıdakı misal dövrənin əvvəlində şərti yoxlamaq üçün Do ... Before Loop-dan istifadə edir. Döngənin içindəki ifadələr yalnız şərt yanlış olduqda yerinə yetirilir. Şərt doğru olduqda dövrədən çıxır.

Private Sub Constant_demo_Click() i = 10 i>15 "Şərt Yanlışdır. Buna görə də dövrə yerinə yetiriləcək i = i + 1 msgbox ("i dəyəri: " & i) Loop End Sub

Yuxarıdakı kod icra edildikdə, o, aşağıdakı çıxışı mesaj qutusunda çap edir.

i-nin dəyəri: 11
i-nin dəyəri: 12
i-nin dəyəri: 13
i-nin dəyəri: 14
i dəyəri: 15
i-nin dəyəri: 16

Alternativ sintaksis

Alternativ Do ... Döngənin sonundakı vəziyyəti sınayan Do ... Before Loop sintaksisi də var. Bu iki sintaksis arasındakı əsas fərq aşağıdakı nümunə ilə izah olunur.

Edin ... ... Şərt qədər döndərin

axın diaqramı

misal

Aşağıdakı misal dövrənin sonunda bir şərti yoxlamaq üçün Do ... Before Loop-dan istifadə edir. Döngə daxilindəki ifadələr şərt True olsa belə, ən azı bir dəfə yerinə yetirilir.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "i-nin dəyəri: " & i Döngə i daha çox15 "Şərt Doğrudur. Buna görə də dövrə bir dəfə icra olunur. Son Sub

Yuxarıdakı kod icra edildikdə, o, aşağıdakı çıxışı mesaj qutusunda çap edir.

i-nin dəyəri: 11

do..Şərt False olduğu müddətcə ifadələr yerinə yetirilənə qədər. (yəni) Şərt doğru olana qədər döngə təkrarlanmalıdır.

Döngə nəzarət qeydləri

Döngə nəzarəti ifadələri icranı normal ardıcıllığından dəyişir. İcra əhatə dairəsindən kənara çıxdıqda, bütün digər döngə ifadələri yerinə yetirilmir.

Nəzarət bəyanatı və təsviri

Operator çıxışı

Müəyyən meyarlar əsasında For Loop-dan çıxmaq istədiyimiz zaman çıxış üçün istifadə olunur. Exit For icra edildikdə, idarəetmə For Loop-dan dərhal sonra növbəti ifadəyə keçir.

Sintaksis

Aşağıda VBA-da Exit For Statement sintaksisi verilmişdir.

axın diaqramı

misal

Aşağıdakı nümunə Exit For istifadə edir. Əgər say 4-ə çatarsa, For Loop başa çatır və idarəetmə For Loop-dan dərhal sonra növbəti ifadəyə keçir.

Private Sub Constant_demo_Click() Dim a Tam Ədədi kimi a = 10 i = 0 üçün Addım 2 "i sayğac dəyişənidir və o, 2 MsgBox ilə artır ("Dəyər i-dir: " & i) Əgər i = 4 olarsa, onda i = i * 10 "Bu, yalnız i=4 MsgBox olduqda yerinə yetirilir ("Dəyər i-dir: " & i) Çıxış "Çıxış i=4 olduqda bitir. Sonrakı Sonda Alt"

Yuxarıdakı kod icra edildikdə, mesaj qutusunda aşağıdakı çıxışı çap edir.

i dəyəri: 0
Dəyər i-dir: 2
Dəyər i-dir: 4
Dəyər i-dir: 40

For döngüsü ifadəsini bitirir və icranı dövrədən dərhal sonra ifadəyə köçürür

Do-dan çıxın

Exit Do bəyanatı müəyyən meyarlara əsaslanaraq Do Loops-dan çıxmaq istədiyimiz zaman istifadə olunur. O, həm Do Do ... while həm də Do ... Before looplarında istifadə edilə bilər.

Exit Do icra edildikdə, idarəetmə Do Döngüsündən dərhal sonra növbəti ifadəyə keçir.

Sintaksis

Aşağıda VBA-da Exit Do ifadəsinin sintaksisi verilmişdir.

misal

Aşağıdakı nümunədə Exit Do istifadə olunur. Sayğac 10-a çatarsa, Do çıxış xətti bitir və idarəetmə For Loop-dan dərhal sonra növbəti ifadəyə keçir.

Private Sub Constant_demo_Click() i = 0 i zamanı edin<= 100 If i >10 Sonra Exit Do " Döngəsi i>10 End If MsgBox olduqda çıxır ("i-nin dəyəri: " & i) i = i + 2 Döngə Sonu Alt

Yuxarıdakı kod icra edildikdə, o, aşağıdakı çıxışı mesaj qutusunda çap edir.

i-nin dəyəri: 0
i-nin dəyəri: 2
i-nin dəyəri: 4
i-nin dəyəri: 6
i-nin dəyəri: 8
i-nin dəyəri: 10

Do While ifadəsini bitirir və icranı dövrədən dərhal sonra ifadəyə köçürür

Proqramlaşdırmanın əsasları üzrə laboratoriya işi

2.1. Analitik şəkildə təmsil olunan funksiyaların cədvəli
və yaxınlıqda birləşir

Məqsəd

· Budaqlanan və tsiklik strukturların təşkilinin əsasları üzrə nəzəri biliklərin möhkəmləndirilməsi.

· Visual Basic sistemində budaqlanan və siklik strukturlardan istifadə etməklə praktik proqramlaşdırma bacarıqlarının əldə edilməsi.

VB-də üç növ döngə ifadəsi var:

sayma dövrü: Üçün…To…Növbəti

İlkin şərtləri olan dövrələr: Do While...Loop, Do Until...Loop, While…WEnd

Postşərtləri olan dövrələr: Do...Loop while, Do...Loop Until.

Hesablama dövrü - bir sıra ifadələr arasında müəyyən sayda dövr etməyə imkan verir. Onun sintaksisi belədir:

üçün sayğac = Başlamaq Kimə son

[operatorlar]

[operatorlar]

Sonrakı[ sayğac]

Parametr sayğac hər iterasiyadan sonra avtomatik artırılan rəqəmli dəyişəndir (tam, real və ya Tarix, Variant, Valyuta). İlkin dəyər sayğac parametrinə bərabərdir Başlamaq, və son parametrdir son. Göstərilməyibsə, addım 1-ə bərabər hesab olunur, addım dəyəri dəyişdirilə bilər. Bu müsbət və ya mənfi bir rəqəm ola bilər.

Do….Loop üçün dörd sintaktik konstruksiya var:

Do...Loop açar sözləri arasındakı ifadələr şərtdən asılı olaraq müəyyən sayda yerinə yetirilir. Məsələn, aşağıdakı proqram fraqmentində C = 100 olduqda şərt yerinə yetiriləcək və dövrə daxil olacaq. Döngə daxilində prosedur çağırılır və C-nin qiyməti 1 azalır.Sonra şərt yenidən yoxlanılır (C > 0) və döngə ifadələri yenidən yerinə yetirilir (onlar cəmi 100 dəfə yerinə yetiriləcək), C = qədər 0. C > 0 şərti yanlış olduqda və dövrə dayandıqda.

C > 0 olarkən edin

Eyni proqram fraqmenti sintaksis 2-də ilkin şərt döngəsindən istifadə edərək icra edilmişdir:

Bu halda dövrə əvvəlki vəziyyətdən fərqli olaraq şərt False olduğu halda yerinə yetirilir, yəni davam edir. əvvəl C = 0 şərtinin yerinə yetirilməsi.

3 və 4-cü sintaksisdəki döngə ifadələri şərt istisna olmaqla, ilk ikisinə çox oxşardır yox döngə ən azı bir dəfə yerinə yetirilənə qədər qiymətləndirilir.

Bu döngələrin sintaksislərində idarəetməni dövrənin arxasındakı operatora ötürməyə imkan verən Exit For və Exit Do dövrəsindən qeyd-şərtsiz çıxış operatorlarından istifadə edə bilərsiniz. Məsələn, aşağıdakı proqram fraqmentində C-nin ilkin qiyməti >50 olarsa, onda dövrə dərhal dayanacaq.



C qədər edin<= 0

MsgBox "Başlat. dəyər icazə veriləndən böyükdür”, “Giriş xətası”

While...Wend döngəsi Visual Basic-in ilkin versiyalarında istifadə edilmişdir. Onun sintaksisi belədir:

ikən<условие>

<Операторы>

Do..Loop-dan fərqli olaraq, While ..Wend dövrəsinin ikinci variantı yoxdur, burada şərt testi dövrənin sonunda aparılır. Bundan əlavə, Exit Do kimi loop çıxış bəyanatı yoxdur.

VBA. Dövrlərin təşkili.

Döngü ifadələri bir hərəkətin və ya hərəkətlər qrupunun yerinə yetirilməsini müəyyən edilmiş sayda təkrarlamaq üçün istifadə olunur. Təkrarların sayı (döngü təkrarlamaları) əvvəlcədən təyin edilə və ya hesablana bilər.

VBA iki növ loop konstruksiyasını dəstəkləyir:

  1. Sabit sayda təkrarlanan döngələr ( sayğac ilə dövrələr).
  2. Qeyri-müəyyən sayda təkrarlanan döngələr ( şərti döngələr).

Bütün növ dövrlər üçün konsepsiya istifadə olunur döngə gövdəsi Döngənin başlanğıc və son ifadələri arasında yerləşən ifadələr blokunu təyin edən A. Döngə gövdəsindəki ifadələrin hər təkrarı adlanır iterasiya.

Sabit Dövrlər

VBA sabit döngənin təşkili üçün iki nəzarət strukturu təqdim edir: For ... Next (sayğaclı dövrə) və For Every ... Next (sadalama ilə dövrə).

Üçün...Növbəti açıqlama müəyyən sayda təkrarlamaları yerinə yetirən sayğaclı tipik bir dövrədir. For … Növbəti ifadənin sintaksisi belədir:

üçün<счетчик> = <начЗначение>Bu<конЗначение>

<блок операторов>

Sonrakı[<счетчик>]

For … Next ifadəsindən istifadə nümunəsi.

Siyahı 1. Üçün ... Növbəti bəyanat

‘ MƏQSƏD: İstifadəçidən iki ədəd qəbul edən proqram yazın.

‘ Bu iki rəqəmin verdiyi diapazondakı bütün nömrələri əlavə edir və sonra

' Nəticə məbləği göstərir.

Alt nümunə 7()

Dim i Tam ‘dövrə sayğacı kimi

Dim sStart ‘start sayğac dəyəri

Dim sEnd ' sayğacın son dəyəri

Dim sSum As Long ‘nəticə cəmi

sStart = InputBox("Birinci nömrəni daxil edin:")

sEnd = InputBox("İkinci nömrəni daxil edin:")

sSum = 0

i = CInt(sStart) - CInt(sEnd) üçün

sSum = sSum + i

Sonrakı i

MsgBox “ ” & sStart & ” ilə ” & sEnd & ” arasında olan ədədlərin cəmi: ” & sSum

son alt

Hər biri üçün ... Növbəti Döngü Bəyanatıobyekt tipli operatorlar kateqoriyasına aiddir, yəni. ilk növbədə kolleksiyalara aiddir obyektlər, eləcə də massivlər . Döngənin gövdəsi massiv və ya kolleksiyadakı elementlərin sayına uyğun olaraq müəyyən edilmiş sayda yerinə yetirilir. For Every… Növbəti bəyanatın formatı:

Hər biri üçün<элемент>In<группа> <блок операторов>Sonrakı[<элемент>]

Şərti döngələr (qeyri-müəyyən döngələr)

Təkrar hərəkətlərin yalnız müəyyən şərtlərdə yerinə yetirilməsi lazım olduqda şərti döngələr istifadə olunur. İterasiyaların sayı müəyyən edilməyib və ümumi halda sıfıra bərabər ola bilər (xüsusilə, ilkin şərti olan döngələr üçün). VBA tərtibatçılara şərti döngələrin təşkili üçün bir neçə nəzarət strukturları təklif edir:

  • Yoxlanılan şərtin növü və bu yoxlamanın yerinə yetirilmə vaxtı ilə fərqlənən dörd növ Do..Loop döngələri.
  • Fasiləsiz While … Wend loop.

Do while... Döngü - Tipik ilkin şərtlə döngə. Döngənin gövdəsi icra edilməzdən əvvəl şərt yoxlanılır. Dövr ona qədər öz işini davam etdirir<условие>icra olunur (yəni Doğrudur). Yoxlama başlanğıcda həyata keçirildiyindən, döngənin gövdəsi heç vaxt icra olunmaya bilər. Do while formatı … Döngü:

Edərkən<условие>

<блок операторов>

döngə

Siyahı 2. Do while … Loop

‘ MƏQSƏD: İstifadəçi daxiletməsini qəbul edən proqram yazın

' ixtiyari nömrələr ardıcıllığı. Giriş dayandırılmalıdır

‘ yalnız daxil edilmiş tək ədədlərin cəmi 100-dən çox olduqdan sonra.

Alt nümunə 8()

Tək Cəmi Tam Ədəd kimi Dim

Dim OddStr As String 'sətri tək ədədlərlə

Dim Num 'daxil edilən nömrələri qəbul etmək

OddStr = "" 'çıxış sətirinin işə salınması

OddSum = 0 ‘OddSum cəminin başlanğıcı

OddSum zamanı edin< 100 ‘начало цикла

Num = InputBox("Nömrə daxil edin:")

Əgər (Num Mod 2)<>0 Sonra 'hətta paritet

OddSum = OddSum + Num ‘tək ədədlərin cəminin yığılması

OddStr = OddStr & Num & ” ”

Bitərsə

döngə

'tək ədədləri olan bir sətir çıxarın

MsgBox prompt:=”Tək ədədlər: ” & OddStr

son alt

Do...Loop while ifadəsitəşkili üçün nəzərdə tutulubpostşərt ilə döngə. Döngə gövdəsi ən azı bir dəfə yerinə yetirildikdən sonra şərt yoxlanılır. Döngə qədər davam edir<условие>doğru olaraq qalır. Do...Loop while formatı:

Et<блок операторов>loop while<условие>

Siyahı 3. Postşart ilə loop

MƏQSƏD: “Nömrəni təxmin et” oyunu üçün proqram hazırlayın. Proqram təsadüfi olmalıdır

‘ 1-dən 1000-ə qədər bir sıra yaratmaq üçün istifadəçi etməlidir

'Bu rəqəmi təxmin et. Proqram daxil edilmiş hər bir nömrə üçün bir ipucu göstərir.

' "az və ya çox".

Alt nümunə 8()

Randomize Timer ‘ təsadüfi ədəd generatorunun işə salınması

Dim msg As String ‘ mesaj sətri

Gizli Nömrə Uzunluğu, İstifadəçiNömrəsi Variant kimi

Başlayın: SecretNumber = Round(Rnd * 1000) ‘ kompüter tərəfindən yaradılan nömrə

UserNumber = Boş ‘ istifadəçinin daxil etdiyi nömrə

Oyun oynayın

Case True seçin

Case IsEmpty(UserNumber): msg = "Lütfən, nömrə daxil edin"

Case UserNumber > SecretNumber: msg = "Həddindən artıq çox!"

İşin İstifadəçi Nömrəsi< SecretNumber: msg = “Слишком мало!”

Seçimi bitir

UserNumber = InputBox(istək:=msg, Başlıq:="Nömrəni təxmin et")

UserNumber while döngüsü<>gizli nömrə

' müayinəsi

Əgər MsgBox("Yenidən oynamaq istəyirsiniz?", vbYesNo + vbSual, "Doğru təxmin etdiniz!") = vbBəli Sonra

Başlamaq üçün gedin

Bitərsə

son alt

Döngəyə qədər et ... Döngə et və et ... Döngəyə qədər dön əvvəllər hesab edilən şərti döngələrin inversiyalarıdır. Ümumiyyətlə, onlar oxşar şəkildə işləyirlər, istisna olmaqla, döngə gövdəsi yanlış bir şərt altında icra olunur (yəni.<условие>=Yanlış). Do Until ... Döngəsinin formatı:

Qədər edin<условие> <блок операторов>döngə

Do … Loop Until döngəsinin formatı:

<блок операторов>

Döngə qədər<условие>

Praktik tapşırıq:Ters çevrilmiş döngə ifadələrindən istifadə edərək siyahı 10 və 11-də proqramları yenidən yazın.

Döngə isə ... Wend şərti döngələrə də aiddir. Bu operator Do While … Döngü strukturuna tam uyğundur. While … Wend döngəsinin formatı:

ikən<условие>

<блок операторов>

Wend

Bu operatorun fərqli bir xüsusiyyəti qeyri-mümkündür məcburi xitam Döngə gövdəsinin (fasilələri) (Exit Do ifadəsi While ... Wend dövrəsində işləmir).

Döngə kəsilməsi

Exit ifadəsi iterasiyanı bitirmək və döngədən çıxmaq üçün istifadə olunur. Bu ifadə, While ... Wend istisna olmaqla, istənilən siklik strukturda tətbiq oluna bilər. Döngəni qırmaq üçün Exit istifadə üçün ümumi sintaksis belədir:

<начало_цикла>

[<блок операторов1>]

Çıx ( | Üçün)

[<блок операторов2>]

<конец_цикла>

Çıxış əmri yerinə yetirildikdə, dövrə kəsilir və idarəetmə ifadədən sonrakı operatora verilir.<конец_цикла>. Döngə gövdəsində çoxlu Exit ifadələri ola bilər.

Siyahı 4. Məcburi döngə çıxışı

Alt nümunə 9()

i = 1 üçün 10000000

Əgər i = 10 olarsa, sayğac 10-a çatdıqda Exit For ' döngəsindən çıxın

Sonrakı




Üst