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:
- Sabit sayda təkrarlanan döngələr ( sayğac ilə dövrələr).
- 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ı