Bir sonraki vba excel için bir sonrakine geçin. VBA'da döngü ifadeleri. "Mevduat Geliri" Projesi

Bir VBA programının aynı eylem kümesini arka arkaya birkaç kez gerçekleştirmesinin (yani aynı kod bloğunu birkaç kez tekrarlamanın) gerekli olduğu durumlar vardır. Bu, VBA döngüleri kullanılarak yapılabilir.

Visual Basic'te Döngü İfadesi İçin

Döngü ifadesi yapısı İçin Visual Basic'te iki biçimde düzenlenebilir: döngü olarak İçin...Sonraki veya bir döngü gibi Her biri için.

Döngü “...Sonraki” için

Döngü İçin...Sonraki belirli bir aralıktan değerleri sırayla alan bir değişken kullanır. Değişkenin değerindeki her değişiklikle birlikte döngünün gövdesinde yer alan eylemler gerçekleştirilir. Basit bir örnekle bunu anlamak kolaydır:

i = 1 ila 10 için Toplam = Toplam + iArray(i) Sonraki i

Bu basit döngüde İçin...Sonraki değişken kullanılır Ben sırasıyla 1, 2, 3, ... 10 değerlerini alan ve bu değerlerin her biri için döngü içindeki VBA kodu çalıştırılır. Böylece bu döngü dizinin elemanlarını toplar iArray bir değişkende Toplam.

Yukarıdaki örnekte döngü artış adımı belirtilmemiştir, dolayısıyla değişkeni artırmak için Ben 1'den 10'a kadar varsayılan artıştır 1 . Ancak bazı durumlarda döngü için farklı artış değerlerinin kullanılması gerekebilir. Bu anahtar kelime kullanılarak yapılabilir Adım Aşağıdaki basit örnekte gösterildiği gibi.

d = 0 ila 10 Adım 0,1 için dToplam = dToplam + d Sonraki d

Yukarıdaki örnekte artış adımı şu şekilde ayarlanmıştır: 0.1 , ardından değişken dToplam döngünün her tekrarı için 0,0, 0,1, 0,2, 0,3, ... 9,9, 10,0 değerlerini alır.

VBA'da döngü adımını belirlemek için örneğin şunun gibi negatif bir değer kullanabilirsiniz:

i = 10 için 1 Adım -1 iArray(i) = i Sonraki i

Burada artış adımı -1 yani değişken Ben Döngünün her tekrarında 10, 9, 8, ... 1 değerlerini alır.

Her Döngü İçin

Döngü Her biri için bir döngüye benziyor İçin...Sonraki, ancak sayaç değişkeni için değerler dizisi boyunca döngü yapmak yerine Her biri için Belirli bir nesne grubundaki her nesne için bir dizi eylem gerçekleştirir. Aşağıdaki örnekte döngü kullanımı Her biri için Geçerli Excel çalışma kitabındaki tüm sayfaları listeler:

Çalışma Sayfalarındaki Her wSheet İçin wSheet'i Çalışma Sayfası Olarak Karart MsgBox "Sayfa Bulundu: " & wSheet.Name Sonraki wSheet

Döngü Kesme Operatörü İçin Çıkış

Şebeke Çıkış Döngüyü kesmek için kullanılır. Kodda bu ifadeyle karşılaşıldığı anda program döngünün yürütülmesini sonlandırır ve bu döngüden hemen sonra kodda bulunan ifadeleri çalıştırmaya devam eder. Bu, örneğin bir dizide belirli bir değeri aramak için kullanılabilir. Bunu yapmak için dizinin her bir öğesine bakmak üzere bir döngü kullanın. Gerekli öğe bulunduğunda geri kalanını aramaya gerek kalmaz; döngü kesintiye uğrar.

Operatör uygulaması Çıkış aşağıdaki örnekte gösterilmiştir. Burada döngü 100 dizi girişi arasında döngü yapar ve her birini değişkenin değeriyle karşılaştırır. dVal. Bir eşleşme bulunursa döngü kesilir:

i = 1 ila 100 için dValues(i) = dVal ise Then IndexVal = i Exit For End If Next i

Visual Basic'te While Döngüsü Yapın

Döngü Yaparken Belirli bir koşul karşılandığı sürece bir kod bloğunu çalıştırır. Aşağıdaki prosedüre bir örnektir Alt, burada bir döngü kullanılıyor Yaparken 1000'i aşmayan Fibonacci sayıları sırayla görüntülenir:

"Sub prosedürü, 1000'i aşmayan Fibonacci sayılarını yazdırır Sub Fibonacci() Dim i As Integer "Dim iFib As Integer dizisindeki bir öğenin konumunu belirten bir sayaç Dim iFib_Next As Integer dizisinin geçerli değerini saklar" dizinin bir sonraki değeri Dim iStep As Integer "bir sonraki artışın boyutunu saklar" i ve iFib_Next değişkenlerini başlatır i = 1 iFib_Next = 0 "Do While döngüsü, "mevcut Fibonacci sayısının değeri 1000'i geçene kadar yürütülür Do iFib_Next iken< 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

Verilen örnekte koşul iFib_Sonraki< 1000 Döngünün başında kontrol edildi. Bu nedenle, eğer ilk değer iFib_Sonraki Eğer 1000'den fazla olsaydı döngü bir kez bile yürütülmezdi.

Döngü uygulamanın başka bir yolu Yaparken– koşulu döngünün başına değil sonuna yerleştirin. Bu durumda koşulun doğru olup olmadığına bakılmaksızın döngü en az bir kez yürütülür.

Şematik olarak böyle bir döngü Yaparken sonunda kontrol edilen durum şu şekilde görünecektir:

Yap...iFib_Next Sırasında Döngü Yapın< 1000

Visual Basic'te Döngüye Kadar Yap

Döngü Şu ana kadar yap bir döngüye çok benzer Yaparken: Döngünün gövdesindeki kod bloğu, belirtilen koşul sağlanana kadar tekrar tekrar yürütülür (koşullu ifadenin sonucu: Doğru). Aşağıdaki prosedürde Alt bir döngü kullanma Şu ana kadar yap bir sütundaki tüm hücrelerden değerleri çıkarır A sütunda boş bir hücreyle karşılaşılıncaya kadar çalışma sayfası:

IRow = 1 Do Until IsEmpty(Cells(iRow, 1)) "Geçerli hücrenin değeri dCellValues ​​​​dizisinde saklanır dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Döngü

Yukarıdaki örnekte koşul IsEmpty(Hücreler(iRow, 1)) yapının başlangıcında yer alır Şu ana kadar yap Bu nedenle, alınan ilk hücre boş değilse döngü en az bir kez yürütülecektir.

Ancak döngü örneklerinde gösterildiği gibi Yaparken Bazı durumlarda, koşullu ifadenin ilk sonucuna bakılmaksızın döngünün en az bir kez yürütülmesini istersiniz. Bu durumda koşullu ifadenin döngünün sonuna şu şekilde yerleştirilmesi gerekir:

Yapın ... IsEmpty(Cells(iRow, 1)) Kadar Döngü

Döngü ifadeleri

VBA'da İki ana döngü türü vardır: sayaçlı döngüler (parametrik) ve koşullu döngüler (yinelemeli).

Sayaç döngüleri, belirli eylemleri belirli sayıda gerçekleştirmenin gerekli olduğu durumlarda kullanılır.

Koşullu döngüler, bir programdaki belirli eylemlerin belirli bir koşul sağlanana kadar tekrarlanması gerektiğinde kullanılır.

Parametreli döngülerİçin...Sonraki

Döngü yapısı:

İçin Cycle_parameter = Başlangıç_Değeriİle Final_Value

[Adım Adım]

Operatörler

[Çıkış İçin]

Sonraki [Döngü_parametresi]

nerede için anahtar kelime VBA (dan), döngünün başlangıcını belirten;

döngü sayacı olarak tanımlanan loop_parameter değişkeni;

İlk_Değer döngü parametresinin başlangıç ​​değerini belirten bir sayı;

Anahtar kelimeye VBA (önce), bölme

Başlangıç_Değeri ve Son_Bilgi;

Final_Value döngü parametresinin değerini belirten bir sayı,

Döngünün bittiği yer;

Adım anahtar kelimesi VBA (adım) için kullanılır

Döngü adımı özellikleri, isteğe bağlı argüman;

Döngü adımını belirten bir adım numarası, ör. buna göre değer

Parametre değerini artırır (veya azaltır)

Her adımda bisiklet sürün. Bu sayı olabilir

Olumsuz;

Çıkış döngüden erken çıkış operatörü (isteğe bağlı);

Sonraki anahtar kelime VBA (sonraki) belirten

Döngünün sonu.

Döngü çalışması:

Adım 1 Öncelikle döngü parametresi belirlenir ve bu değişkenin başlangıç ​​ve son değerleri hesaplanıp saklanır.

Adım 2 Döngü parametresine bir başlangıç ​​değeri atanır.

Adım 3 Döngü parametresinin başlangıç ​​değeri nihai değerle karşılaştırılır.

Döngü parametresi nihai değerden büyükse program hemen döngüden çıkar ve döngüyü takip eden kod satırına atlar.

Adım 4 Döngünün gövdesi yürütülür.

Adım 5 Döngünün gövdesini çalıştırdıktan sonra döngü parametresine bir sonraki değer atanır. 3. adıma gidin.

Not.

1. Bir anahtar kelime kullanılıyorsa Adım , daha sonra döngü parametresi bu kelimeden sonra belirtilen sayıya göre değişir. Eğer kelime Adım yoksa adım değeri bire eşittir.

Örnek 1.

I için = 0 ila 10 Adım 2 (Değer I 2 oranında artacak)

2. For...Sonraki döngü herhangi bir duruma ulaşıldığında erken sonlandırılabilir. Bunu yapmak için döngüde doğru yere operatörü yerleştirmeniz gerekir.İçin Çıkış.

Örnek 2.

Tam Sayı Olarak Dim S

Tam Sayı Olarak Dim j

S=2

j = 1 ila 10 için

S = S + j

Eğer S > 6 ise

Çıkış (Değerin olması durumunda döngüden çıkın. S > 6)

Eğer Sonlandır

Sonraki j

Mesaj Kutusu(lar)

Koşullu Döngüler (Yinelemeli)

Bir eylemin (birkaç eylemin) birçok kez gerçekleştirilmesi gerekiyorsa, ancak kaç kez gerçekleştirileceği önceden bilinmiyorsa ve bu bir koşula bağlıysa, o zaman önkoşulu veya sonkoşulu olan bir döngü kullanmalısınız.

VBA'da iki ana döngü var YAPIN...DÖNGÜ bir anahtar kelime tarafından girilen bir koşulla Sırasında ve anahtar kelimenin girdiği koşulla Değin . Her ikisi de ön koşullu veya son koşullu olabilir.

Sözdizimi:

nerede yapılır anahtar kelime (yap);

Sırasında anahtar kelime (henüz);

Değin anahtar kelime (kadar);

Döngü döngünün sonunu belirten bir anahtar kelime;

<условие>doğruluğu kontrol edilen mantıksal bir ifade

Döngü gövdesinin her yürütülmesinin başında;

<тело_цикла>keyfi operatör dizisi;

Yapın...İnşaat sırasında okur: koşul yerine getirilirken yapın. TasarımdaŞunu yapın: Şunun için:

Yap... İnşaat şunu okuyana kadar: koşul sağlanana kadar yapın. Tasarımda Yap... Kadar Adımı arttırmak için özel bir operatör yazmalısınız çünkü tasarımın aksine, içindeİçin , bu otomatik olarak yapılmaz.

Anahtar kelimeden sonra yazılan koşul Değin , her yinelemenin sonunda kontrol edilir (döngü gövdesi yürütüldükten sonra). Döngüdekiyle tam olarak aynı şekilde çalışmadığını unutmayın. Sırasında . Koşul doğruysa ( Doğru ), ardından döngü sona erer. Koşul karşılanmıyorsa (yanlıştır) YANLIŞ ), daha sonra döngünün gövdesi tekrar yürütülür.

Örnek 1.

Sorunun formülasyonu. Bir altprogram prosedürünü kullanarak sonlu bir serinin toplamını hesaplayın.

Görev yürütme teknolojisi:

1. Başlangıç ​​verileri: ben Z

Sonuç: S  R .

2.Ön koşullu bir döngü kullanarak standart proje modülüne aşağıdaki özel prosedürü yazın Sırasında:

Alt toplam()

Tam Sayı Olarak Dim S

Tam Sayı Olarak Dim i

S=0

ben = 1

Ben iken yap<= 10

S = S + i^2

ben = ben + 1

Döngü

Mesaj Kutusu(lar)

Son Alt

3.Ön koşullu bir döngü kullanarak standart proje modülüne aşağıdaki özel prosedürü yazın Değin:

Alt toplam()

Tam Sayı Olarak Dim S

Tam Sayı Olarak Dim i

S=0

ben = 1

i > 10 olana kadar yapın

S = S + i^2

ben = ben + 1

Döngü

Mesaj Kutusu(lar)

Son Alt

4 Sonkoşulu bir döngü kullanarak standart proje modülüne aşağıdaki özel prosedürü yazın Sırasında:

Alt toplam()

Tam Sayı Olarak Dim S

Tam Sayı Olarak Dim i

S=0

ben = 1

S = S + i^2

ben = ben + 1

Ben iken döngü<= 10

Mesaj Kutusu(lar)

Son Alt

5 Sonkoşulu bir döngü kullanarak standart proje modülüne aşağıdaki özel prosedürü yazın Değin:

Alt toplam()

Tam Sayı Olarak Dim S

Tam Sayı Olarak Dim i

S=0

ben = 1

S = S + i^2

ben = ben + 1

i > 10'a kadar döngü

Mesaj Kutusu(lar)

Son Alt

Bir kod bloğunu birden çok kez çalıştırmanız gereken bir durum olabilir. Genel olarak ifadeler sırayla yürütülür: bir fonksiyondaki ilk ifade önce yürütülür, sonra ikincisi vb.

Programlama dilleri, daha karmaşık yürütme yollarına olanak tanıyan farklı kontrol yapıları sağlar.

Döngü ifadesi, bir ifadeyi veya ifade grubunu birden çok kez çalıştırmamıza olanak tanır. Aşağıda VBA'daki bir döngü ifadesinin genel görünümü bulunmaktadır.

VBA, döngü gereksinimlerini karşılamak için aşağıdaki döngü türlerini sağlar. Ayrıntılarını kontrol etmek için aşağıdaki bağlantılara tıklayın.

döngü için

For döngüsü, geliştiricinin belirli sayıda yürütülmesi gereken bir döngüyü verimli bir şekilde yazmasına olanak tanıyan bir tekrarlama kontrol yapısıdır.

Sözdizimi

Aşağıda VBA'daki for döngüsünün sözdizimi verilmiştir.

Sayaç için = Başlangıç ​​Bitişe .... .... Sonraki

Akış diyagramı

Döngü modundaki kontrol akışı aşağıdadır -

  • İlk adım tamamlandı. Bu adım, herhangi bir döngü kontrol değişkenini başlatmanıza ve adım sayacı değişkenini artırmanıza olanak tanır.
  • İkinci olarak durum değerlendirilir. Doğruysa döngünün gövdesi yürütülür. Yanlışsa döngünün gövdesi yürütülmez ve kontrol akışı For döngüsünden hemen sonraki ifadeye geçer.
  • For döngüsü döngüsü yürütüldükten sonra kontrol akışı bir sonraki ifadeye geçer. Bu ifade herhangi bir döngü kontrol değişkenini güncellemenizi sağlar. Adım sayacı değerine göre güncellenir.
  • Durum şimdi tekrar değerlendirilmektedir. Doğruysa döngü yürütülür ve işlem tekrarlanır (döngü gövdesi, ardından adım artışı, ardından yeniden koşul). Koşul yanlış olduğunda For döngüsü sona erer.

örnek

Bir düğme ekleyin ve aşağıdaki işlevi ekleyin.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 i = 0 için Adım 2'ye MsgBox "The value is i is: " & i Next End Sub

Yukarıdaki kod derlenip çalıştırıldığında aşağıdaki çıktıyı üretir.

Değer şu: 0
Değer şu: 2
Değer şu: 4
Değer i: 6
Değeri: 8
Değeri: 10

Bir dizi ifadeyi birden çok kez çalıştırır ve döngü değişkenini kontrol eden kodu kısaltır.

döngü için

Her döngü, bir dizi veya koleksiyondaki her öğe üzerinde bir ifadeyi veya ifade grubunu yürütmek için kullanılır.

Her döngü için For döngüsüne benzer; ancak döngü, dizideki veya gruptaki her öğe için yürütülür. Bu nedenle bu tip döngülerde adım sayacı bulunmayacaktır. Esas olarak dizilerle veya nesne bağlamında kullanılır. dosya sistemi yinelemeli olarak çalışmak.

Sözdizimi

Aşağıda VBA'daki For Every döngüsünün sözdizimi verilmiştir.

Gruptaki Her Bir Öğe İçin....Sonraki

örnek

Private Sub Constant_demo_Click() "meyveler bir dizidir meyveler = Array("elma", "portakal", "kiraz") Dim meyve adları As Variant "For her döngü için kullanılarak yinelenir. Meyvelerdeki Her Öğe İçin meyve adları = meyve adları & Öğe & Chr(10) Sonraki MsgBox meyve adları End Sub

Yukarıdaki kod çalıştırıldığında, meyvelerin tüm adlarını her satırda bir öğe olacak şekilde yazdırır.

elma
turuncu
kirazlar

Bu, grupta en az bir öğe varsa gerçekleştirilir ve gruptaki her öğe için tekrarlanır.

while..wend döngüsü

Bir While While ... Wend döngüsünde, koşul True ise, Wend anahtar sözcüğüyle karşılaşılıncaya kadar tüm ifadeler yürütülür.

Koşul yanlışsa döngü sona erer ve kontrol Wend anahtar sözcüğünden sonraki ifadeye geçer.

Sözdizimi

Aşağıda VBA'daki While..Wend döngüsünün sözdizimi verilmiştir.

Koşul(lar) ise ... Wend

Akış diyagramı

örnek

Private Sub Constant_demo_Click() Dim Sayacı: Sayaç = 10 Sayaç iken< 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

Yukarıdaki kod çalıştırıldığında mesaj alanına aşağıdaki çıktıyı verecektir.

Sayacın Güncel Değeri: 11
Sayacın Güncel Değeri: 12
Sayacın Güncel Değeri: 13
Sayacın Güncel Değeri: 14
Sayacın Güncel Değeri: 15

Bu, döngü gövdesini çalıştırmadan önce durumu kontrol eder.

do..while döngüsü

Bir koşul doğruyken bir dizi ifadeyi tekrarlamak istediğimizde Do ... while döngüsü kullanılır. Koşul döngünün başında veya sonunda kontrol edilebilir.

Sözdizimi

Aşağıda VBA'daki Do...While döngüsünün sözdizimi verilmiştir.

Koşul sırasında yapın ......Döngü

Akış diyagramı

örnek

Aşağıdaki örnek, döngünün başlangıcındaki durumu kontrol etmek için Do ... while döngüsünü kullanır. Döngü içindeki ifadeler yalnızca koşulun Doğru olması durumunda yürütülür.

Özel Alt Constant_demo_Click() Yaparken Yap< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

i'nin değeri: 1
i'nin değeri: 2
i'nin değeri: 3
i'nin değeri: 4
i'nin değeri: 5

Alternatif sözdizimi

Ayrıca Do ... while döngüsü için döngünün sonundaki durumu kontrol eden alternatif bir sözdizimi de vardır. Bu iki sözdizimi arasındaki temel fark aşağıdaki örnekte açıklanmaktadır.

Yapın ... ... Döngü While koşulu

örnek

Aşağıdaki örnek, döngünün sonundaki durumu kontrol etmek için Do ... while döngüsünü kullanır. Bir döngü içindeki ifadeler, koşul Yanlış olsa bile en az bir kez yürütülür.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "i'nin değeri: " & i Loop While i< 3 "Condition is false.Hence loop is executed once. End Sub

Yukarıdaki kod çalıştırıldığında bir mesaj kutusuna aşağıdaki çıktıyı yazdırır.

i'nin değeri: 11

do..While ifadeleri, koşul True olduğu sürece yürütülür. (Yani) Koşul Yanlış olana kadar döngü tekrarlanmalıdır.

do..intil döngüsü

Koşul yanlışken bir dizi ifadeyi tekrarlamak istediğimizde do ... intil döngüsü kullanılmayacaktır. Koşul döngünün başında veya sonunda kontrol edilebilir.

Sözdizimi

Aşağıda VBA'daki Do..Until döngüsünün sözdizimi verilmiştir.

Koşula kadar yapın ... ... Döngü

Akış diyagramı

örnek

Aşağıdaki örnek, döngünün başlangıcındaki bir koşulu test etmek için Do... Before Loop'u kullanır. Döngü içindeki ifadeler yalnızca koşulun yanlış olması durumunda yürütülür. Koşul doğru olduğunda döngüden çıkar.

Private Sub Constant_demo_Click() i = 10 i>15'e kadar yapın "Koşul Yanlış. Bu nedenle döngü yürütülecek i = i + 1 msgbox ("i'nin değeri: " & i) Döngü Sonu Sub

Yukarıdaki kod çalıştırıldığında bir mesaj kutusuna aşağıdaki çıktıyı yazdırır.

i'nin değeri: 11
i'nin değeri: 12
i'nin değeri: 13
i'nin değeri: 14
i'nin değeri: 15
i'nin değeri: 16

Alternatif sözdizimi

Ayrıca döngünün sonundaki koşulu test eden Do... Before Loop adlı alternatif bir sözdizimi de vardır. Bu iki sözdizimi arasındaki temel fark aşağıdaki örnekle açıklanmaktadır.

Yap ... ... koşuluna kadar döngü yap

Akış diyagramı

örnek

Aşağıdaki örnek, döngünün sonundaki bir koşulu test etmek için Do...Before döngüsünü kullanır. Bir döngü içindeki ifadeler, koşul Doğru olsa bile en az bir kez yürütülür.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "i'nin değeri: " & i i'ye Kadar Döngü more15 "Koşul Doğrudur. Dolayısıyla döngü bir kez çalıştırılır. End Sub

Yukarıdaki kod çalıştırıldığında bir mesaj kutusuna aşağıdaki çıktıyı yazdırır.

i'nin değeri: 11

do..Until ifadeleri koşul False olduğu sürece yürütülür. (Yani) Koşul doğru olana kadar döngü tekrarlanmalıdır.

Döngü Kontrol Kayıtları

Döngü kontrol ifadeleri yürütmeyi normal sıralarının dışına çıkarır. Yürütme kapsam dışına çıktığında, diğer tüm döngü ifadeleri yürütülmez.

Kontrol Beyanı ve Açıklaması

Operatör çıkışı

Exit for, belirli kriterlere göre For Döngüsünden çıkmak istediğimizde kullanılır. Exit For çalıştırıldığında kontrol, For Döngüsünden hemen sonraki ifadeye geçer.

Sözdizimi

Aşağıda VBA'daki Exit For State sözdizimi verilmiştir.

Akış diyagramı

örnek

Aşağıdaki örnek Exit For'u kullanır. Sayaç 4'e ulaşırsa For Döngüsü sona erer ve kontrol, For Döngüsünden hemen sonraki ifadeye geçer.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 i = 0 için Adım 2'ye "i sayaç değişkenidir ve 2 artırılır MsgBox ("Değer i: " & i) If i = 4 O zaman i = i * 10 "Bu yalnızca i=4 MsgBox ise çalıştırılır ("Değer i: " & i) Exit For "i=4 olduğunda çıkılır End If Next End Sub

Yukarıdaki kod çalıştırıldığında mesaj kutusuna aşağıdaki çıktıyı yazdırır.

Değer şu: 0
Değer şu: 2
Değer şu: 4
Değeri: 40

For döngüsü ifadesini sonlandırır ve yürütmeyi döngüden hemen sonraki ifadeye aktarır

Çıkış yap

Exit Do İfadesi belirli kriterlere göre Do Looplardan çıkmak istediğimizde kullanılır. Hem Do Do...While hem de Do...Before döngülerinde kullanılabilir.

Exit Do yürütüldüğünde, kontrol Do Döngüsünden hemen sonra bir sonraki ifadeye geçer.

Sözdizimi

VBA'da Exit Do ifadesinin söz dizimi aşağıdadır.

örnek

Aşağıdaki örnekte Exit Do kullanılmaktadır. Sayaç 10'a ulaştığında Do çıkış satırı sonlandırılır ve kontrol, For Döngüsünden hemen sonraki ifadeye geçer.

Özel Alt Constant_demo_Click() i = 0 Do While i<= 100 If i >10 Sonra Çıkış Yap " Döngü Çıkışı i>10 End If MsgBox ("i'nin Değeri: " & i) i = i + 2 Döngü Sonu Sub

Yukarıdaki kod çalıştırıldığında bir mesaj kutusuna aşağıdaki çıktıyı yazdırır.

i'nin değeri: 0
i'nin değeri: 2
i'nin değeri: 4
i'nin değeri: 6
i'nin değeri: 8
i'nin değeri: 10

Bir Do While deyimini tamamlar ve yürütmeyi döngüden hemen sonra deyime aktarır

Programlamanın temelleri üzerine laboratuvar çalışması

2.1. Analitik olarak temsil edilen fonksiyonların tablolanması
ve yakınlarda birleşiyor

İşin amacı

· Dallanma ve döngüsel yapıların organizasyonunun temelleri üzerine teorik bilginin pekiştirilmesi.

· Visual Basic sisteminde dallanma ve döngüsel yapıları kullanarak pratik programlama becerilerinin kazanılması.

VB'de üç tür döngü ifadesi vardır:

sayma döngüsü: İçin...Kime...Sonraki

önkoşullu döngüler: Do While...Loop, Do Until...Loop, While...WEnd

· sonkoşullarla döngüler: Do...Loop While, Do...Loop Until.

Sayma döngüsü – bir dizi ifadeyi belirli sayıda tekrarlamanıza olanak tanır. Sözdizimi aşağıdaki gibidir:

İçin tezgah = Başlangıçİle son

[operatörler]

[operatörler]

Sonraki [ tezgah]

Parametre tezgah her tekrardan sonra otomatik olarak artan sayısal bir değişkendir (tamsayı, gerçek tür veya Tarih, Değişken, Para Birimi türü). Başlangıç ​​değeri tezgah parametreye eşit Başlangıç, ve son parametre – son. Belirtilmediği takdirde adım 1'e eşit kabul edilir; adım değeri değiştirilebilir. Pozitif veya negatif bir sayı olabilir.

Do....Loop'un dört sözdizimsel yapısı vardır:

Do... Loop anahtar sözcükleri arasındaki ifadeler, duruma bağlı olarak belirli sayıda yürütülür. Örneğin aşağıdaki program fragmanında C=100 olduğunda koşul sağlanacak ve döngüye girilecektir. Döngü içinde prosedür çağrılır ve C'nin değeri 1 azaltılır. Daha sonra (C > 0) koşulu tekrar kontrol edilir ve döngü operatörleri tekrar çalıştırılır (toplamda 100 kez çalıştırılacaklardır), C = olana kadar 0. C > 0 koşulu yanlış olduğunda ve döngü durduğunda.

C > 0 iken yapın

Sözdizimi 2'de bir önkoşulu olan bir döngü kullanılarak yürütülen aynı program parçası:

Bu durumda döngü önceki durumdan farklı olarak koşul False olduğu sürece çalışır yani devam eder. önce C = 0 koşulunun yerine getirilmesi.

Döngü ifadeleri 3 ve 4, sözdizimi açısından ilk ikisine çok benzer, ancak koşul Olumsuz Döngü en az bir kez yürütülene kadar hesaplanır.

Bu döngü sözdizimleri, kontrolü döngünün arkasındaki operatöre aktarmak için Exit For ve Exit Do koşulsuz döngü çıkış ifadelerini kullanabilir. Örneğin aşağıdaki program parçasında C'nin başlangıç ​​değeri >50 ise döngü hemen duracaktır.



C'ye Kadar Yap<= 0

MsgBox "Başlat" değer kabul edilebilir değerden büyük”, “Giriş hatası”

While...Wend döngüsü Visual Basic'in ilk sürümlerinde kullanılıyordu. Sözdizimi aşağıdaki gibidir:

Sırasında<условие>

<Операторы>

Do..Loop döngüsünden farklı olarak While ..Wend döngüsünde, döngü sonunda koşulun kontrol edildiği ikinci bir seçenek yoktur. Ayrıca bunun için Exit Do gibi bir döngü çıkış ifadesi yoktur.

VBA. Döngülerin organizasyonu.

Döngü ifadeleri, bir eylemi veya eylem grubunu belirli sayıda tekrarlamak için kullanılır. Tekrar sayısı (döngü yinelemeleri) önceden belirlenebilir veya hesaplanabilir.

VBA iki tür döngü yapısını destekler:

  1. Sabit sayıda tekrara sahip döngüler ( karşı döngüler).
  2. Belirsiz sayıda tekrara sahip döngüler ( koşullu döngüler).

Tüm çevrim türleri için bu kavram kullanılır döngü gövdesi döngünün başlangıç ​​ve bitiş ifadeleri arasına alınmış bir ifade bloğunu tanımlar. Döngünün gövdesindeki ifadelerin yürütülmesinin her tekrarına çağrılır. yineleme

Sabit döngüler

VBA, sabit bir döngüyü düzenlemek için iki kontrol yapısı sağlar: For ... Next (sayaçlı döngü) ve For Every ... Next (numaralandırmalı döngü).

Operatör...Sonraki Bu, belirli sayıda yinelemeyi yürüten tipik bir sayaç döngüsüdür. For...Next ifadesinin sözdizimi şöyledir:

İçin<счетчик> = <начЗначение>O<конЗначение>

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

Sonraki [<счетчик>]

For...Next operatörünün kullanımına bir örnek.

Listeleme 1. Şunun için… Sonraki operatör

‘ GÖREV: Kullanıcıdan iki sayı alan bir program oluşturun.

' Bu iki sayının belirttiği aralıktaki tüm sayıları toplar ve ardından

' ortaya çıkan tutarı görüntüler.

Alt örnek7()

Dim i As Tamsayı 'döngü sayacı

Dim sStart 'başlangıç ​​sayaç değeri

Dim sEnd 'son sayaç değeri

Dim sSum As Long 'sonuç toplamı

sStart = OutputBox(“İlk sayıyı girin:”)

sEnd = OutputBox(“İkinci sayıyı girin:”)

sToplam = 0

i = CInt(sStart) için CInt(sEnd) için

sToplam = sToplam + i

Sonraki ben

MsgBox ““ & sStart & ” ile “ & sEnd & ” arasındaki sayıların toplamı: “ & sSum

Son Alt

Döngü ifadesi Her Biri İçin...Sonrakinesne türü operatörleri kategorisine aittir; öncelikle koleksiyonlara uygulanır nesneler ve diziler . Döngünün gövdesi, dizideki veya koleksiyondaki öğe sayısına karşılık gelen sabit sayıda çalıştırılır. Her biri için...Sonraki bildirim formatı:

Her biri için<элемент>İçinde<группа> <блок операторов>Sonraki [<элемент>]

Koşullu döngüler (tanımsız döngüler)

Koşullu döngüler, tekrarlanan eylemlerin yalnızca belirli koşullar altında gerçekleştirilmesi gerektiğinde kullanılır. Yinelemelerin sayısı tanımlanmamıştır ve genel olarak sıfıra eşit olabilir (özellikle ön koşullu döngüler için). VBA, geliştiricilere koşullu döngüleri düzenlemek için çeşitli kontrol yapıları sunar:

  • Kontrol edilen koşulun türüne ve bu kontrolü tamamlamak için gereken süreye göre farklılık gösteren dört tip Do..Loops.
  • Sürekli döngü Süre... Bitiş.

Do While... Döngüsü tipiktir ön koşullu döngü. Döngünün gövdesi yürütülmeden önce koşul kontrol edilir. Döngü, sonuna kadar çalışmaya devam eder.<условие>yürütülür (yani True değerine sahiptir). Kontrol başlangıçta yapıldığından döngünün gövdesi hiçbir zaman çalıştırılmayabilir. Şu Sırada Yap... Döngü Formatı:

Yaparken<условие>

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

Döngü

Liste 2. Şu Sırada Yap... Döngü

‘ GÖREV: Kullanıcı girişi gerektiren bir program oluşturun

'Rastgele bir sayı dizisi. Giriş sonlandırılmalıdır

' ancak girilen tek sayıların toplamı 100'ü geçtikten sonra.

Alt örnek8()

Dim OddSum As Integer tek sayıların toplamı

Dim OddStr As String 'tek sayılara sahip bir dize

Dim Num’ girilen sayıları kabul etmek için

OddStr = “” 'çıkış dizesi başlatma

OddSum = 0 'OddSum'u başlat

OddSum Sırasında Yap< 100 ‘начало цикла

Sayı = OutputBox(“Bir sayı giriniz: “)

Eğer (Num Mod 2)<>0 Daha sonra ‘parite kontrolü

OddSum = OddSum + Num 'tek sayıların toplamının toplamı

OddStr = OddStr & Sayı & ” ”

Eğer Sonlandır

Döngü

'tek sayılardan oluşan bir dize yazdır

MsgBox istemi:=”Tek sayılar: ” & OddStr

Son Alt

Do...Loop While İfadesiorganizasyon için tasarlandısonkoşullu döngü. Döngünün gövdesi en az bir kez yürütüldükten sonra koşul kontrol edilir. Döngü, şu ana kadar çalışmaya devam eder:<условие>doğru kalır. Yapın... Format Sırasında Döngü:

Yapmak<блок операторов>Döngü Süre<условие>

Liste 3. Sonkoşullu döngü

GÖREV: “Sayıyı tahmin et” oyunu için bir program oluşturun. Program rastgele olmalı

' 1'den 1000'e kadar bir sayı oluşturmanın yolu, kullanıcının

'Bu sayıyı tahmin et. Program girilen her sayı için bir ipucu görüntüler

' "Az çok".

Alt örnek8()

Rastgele Zamanlayıcı 'rastgele sayı üretecini başlat

Dim msg As String ' mesaj dizisi

Dim SecretNumber As Long, UserNumber As Variant

Başlangıç: SecretNumber = Round(Rnd * 1000) ‘ bilgisayar tarafından oluşturulan sayı

UserNumber = Kullanıcının girdiği boş ‘sayı

Oyun oyna

Büyük/Doğru Durumu Seç

Case IsEmpty(UserNumber): msg = “Bir sayı girin”

Case UserNumber > SecretNumber: msg = “Çok fazla!”

Vaka Kullanıcı Numarası< SecretNumber: msg = “Слишком мало!”

Seçimi Sonlandır

UserNumber = Giriş Kutusu(istem:=msg, Başlık:=”Sayıyı tahmin et”)

Kullanıcı Numarası Sırasında Döngü<>Gizli Numara

' muayene

If MsgBox(“Tekrar oyna?”, vbYesNo + vbQuestion, “Tahmin ettiniz!”) = vbYes Sonra

Başa Git

Eğer Sonlandır

Son Alt

Döngüler Şu Kadar Yapılır... Döngü ve Yapılır... Şu Kadar Döngülenir daha önce tartışılan koşullu döngülerin tersine çevrilmesidir. Genel olarak benzer şekilde çalışırlar ancak koşulun yanlış olması durumunda döngünün gövdesi yürütülür (ör.<условие>=Yanlış). Şu ana kadar yapın... Döngü Formatı:

Şu ana kadar yap<условие> <блок операторов>Döngü

Yapın... Döngü biçimine kadar döngü:

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

Döngüye kadar<условие>

Pratik görev:Liste 10 ve 11'deki programları ters çevrilmiş döngü ifadelerini kullanarak yeniden yazın.

Döngü Süre...Bitiş koşullu döngüler için de geçerlidir. Bu operatör Do While... Döngü yapısıyla tamamen tutarlıdır. While...Wend döngü formatı:

Sırasında<условие>

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

Wend

Bu operatörün ayırt edici özelliği imkansızlıktır zorla fesih(kesintiye uğrayarak) döngünün gövdesi (Exit Do operatörü While ... Wend döngüsünde çalışmaz).

Bir döngüyü kesintiye uğratmak

Bir yinelemeyi erken sonlandırmak ve döngüden çıkmak için Exit ifadesi kullanılır. Bu operatör While... Wend dışında herhangi bir döngüsel yapıya uygulanabilir. Bir döngüyü kırmak için Çıkış'ı kullanmanın genel sözdizimi şöyledir:

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

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

Çıkış (İçin | Yap)

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

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

Exit ifadesi çalıştırıldığında döngü kesilir ve kontrol, ifadeyi takip eden ifadeye aktarılır.<конец_цикла>. Bir döngünün gövdesinde birden fazla Exit ifadesi bulunabilir.

Liste 4. Döngüden çıkmaya zorla

Alt örnek9()

i = 1 ila 10000000 için

Eğer i = 10 ise Then Exit For ‘ sayaç 10’a ulaştığında döngüden çıkın

Sonraki




Tepe