VBA'da Döngüler

Bir VBA programının aynı eylemleri arka arkaya birkaç kez gerçekleştirmesi gerektiği durumlar vardır (yani, aynı kod bloğunu birkaç kez tekrarlayın). Bu, VBA döngüleri kullanılarak yapılabilir.

VBA döngüleri şunları içerir:

Ardından, bu döngülerin her birine daha yakından bakacağız.

Visual Basic'te Döngü Operatörü için

Döngü operatörünün yapısı The Visual Basic'te iki biçimden birinde düzenlenebilir: bir döngü olarak için… Sonraki veya bir döngü olarak Her biri için.

“… Sonraki İçin” Döngüsü

devir için… Sonraki belirli bir aralıktan sırayla değerler alan bir değişken kullanır. Değişkenin değerindeki her değişiklikle, döngünün gövdesinde yer alan eylemler gerçekleştirilir. Bunu basit bir örnekten anlamak kolaydır:

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

Bu basit döngüde için… Sonraki değişken kullanılır isı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 değişkende Toplam.

Yukarıdaki örnekte, değişkeni artırmak için döngü artışı belirtilmemiştir. i 1'den 10'a kadar, varsayılan bir artıştır 1… Ancak bazı durumlarda döngü için farklı artış değerleri kullanmak gerekiyor. Bu, anahtar kelime kullanılarak yapılabilir adımaşağıdaki basit örnekte gösterildiği gibi.

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

Yukarıdaki örnekte, artış adımı şuna eşit olarak 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 bunun gibi bir negatif değer kullanabilirsiniz:

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

Buradaki artış -1, yani değişken i döngünün her tekrarı ile 10, 9, 8, … 1 değerlerini alır.

Döngü "Her biri için"

devir Her biri için bir döngüye benzer için… Sonraki, ancak sayaç değişkeni için değer dizisi üzerinde yineleme yapmak yerine, döngü Her biri için belirtilen nesne grubundaki her nesne için bir dizi eylem gerçekleştirir. Aşağıdaki örnekte, bir döngü kullanarak Her biri için geçerli Excel çalışma kitabındaki tüm sayfaları numaralandırır:

Çalışma Sayfalarındaki Her Sayfa İçin Çalışma Sayfası Olarak Dim wSheet MsgBox "Найден лист: " & wSheet.Name Sonraki wSheet

Döngü kesme ifadesi “Çıkış İçin”

Kullanım Çıkış döngüyü kesmek için kullanılır. Kodda bu deyimle 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 deyimlerin yürütülmesine geçer. Bu, örneğin bir dizide belirli bir değeri aramak için kullanılabilir. Bunu yapmak için, bir döngü kullanarak dizinin her bir elemanı taranır. Gerekli eleman bulunur bulunmaz, geri kalanı incelemeye gerek yoktur - döngü kesintiye uğrar.

Operatör uygulaması Çıkış aşağıdaki örnekte gösterilmiştir. Burada döngü 100'den fazla dizi girişini yineler ve her birini değişkenin değeriyle karşılaştırır dVal… Bir eşleşme bulunursa, döngü sonlandırılır:

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

Visual Basic'te Do while Döngüsü

devir Yaparken belirtilen koşul karşılandığı sürece bir kod bloğunu yürütür. Aşağıdaki bir prosedür örneğidir Alt, hangi döngü kullanarak Yaparken 1000'i geçmeyen Fibonacci sayıları sırayla görüntülenir:

'Alt prosedür, 1000'i aşmayan Fibonacci sayıları verir Alt Fibonacci() Dim i As Integer 'sayacı, dizideki öğenin konumunu gösterir Dim iFib As Integer 'dizinin geçerli değerini saklar Dim iFib_Next As Integer 'sonraki değeri saklar Dizinin 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ı 1000'den büyük olana kadar yürütülür iFib_Next < 1000 ise Do While i = 1 Daha sonra 'ilk eleman için özel durum iStep = 1 iFib = 0 Else' sıranın mevcut değerinin üzerine yazmadan önce bir sonraki artışın boyutunu kaydet iStep = iFib iFib = iFib_Next End If 'mevcut Fibonacci sayısını A sütununda yazdır aktif çalışma sayfasında 'i Cells(i , 1).Value = iFib' dizini ile satırda 'sonraki Fibonacci sayısını hesapla ve öğe konum dizinini 1 artır iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Verilen örnekte, koşul iFib_Next < 1000 döngünün başında kontrol edilir. Bu nedenle, eğer ilk değer iFib_Sonraki 1000'den fazla olsaydı, döngü asla yürütülmezdi.

Bir 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 karşılanıp karşılanmadığı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 edilecek koşulla şöyle görünecektir:

Yap ... iFib_Next < 1000 iken Döngü

Цикл «Yapılana Kadar» в Visual Basic

devir Kadar Yap döngüsüne çok benzer Yaparken: döngünün gövdesindeki kod bloğu, belirtilen koşul karşılanana kadar tekrar tekrar yürütülür (koşullu ifadenin sonucu Gerçek). Bir sonraki prosedürde Alt bir döngü kullanmak Kadar Yap bir sütundaki tüm hücrelerden değerleri al A sütun boş bir hücreyle karşılaşana kadar çalışma sayfası:

iRow = 1 Do Kadar IsEmpty(Cells(iRow, 1)) 'Geçerli hücrenin değeri dCellValues ​​​​dCellValues(iRow) = Cells(iRow, 1) dizisinde saklanır.Value iRow = iRow + 1 Loop

Yukarıdaki örnekte, koşul IsBoş(Hücreler(iRow, 1)) yapının başlangıcında yer alan Kadar Yap, bu nedenle, alınan ilk hücre boş değilse döngü en az bir kez yürütülür.

Ancak, döngü örneklerinde gösterildiği gibi Yaparken, bazı durumlarda koşullu ifadenin ilk sonucundan bağımsız olarak döngünün en az bir kez yürütülmesi gerekir. Bu durumda, koşullu ifade aşağıdaki gibi döngünün sonuna yerleştirilmelidir:

Do ... IsBoşa Kadar Döngü(Cells(iRow, 1))

Yorum bırak