VBA şube operatörleri: basit bir seçim. Visual Basic Vba denetimi, aksi takdirde kuralları oluşturur

Kontrol yapıları, program yürütme sırasını kontrol etmenizi sağlar. Kontrol deyimleri olmadan, tüm program deyimleri soldan sağa ve yukarıdan aşağıya doğru çalışacaktır. Bununla birlikte, bazen belirli bir talimat setini otomatik olarak tekrar tekrar yürütmek veya çalışma zamanında kullanıcı tarafından belirtilen değişkenlerin veya parametrelerin değerlerine bağlı olarak sorunu farklı şekilde çözmek gerekir. Bunun için kontrol yapıları ve döngüler kullanılır.

VBA, aşağıdaki karar yapılarını destekler:

Eğer. ... ... Sonra. ... ... Başka

6.1 If yapısı. ... ... Sonra

Eğer. ... ... Sonra, bazı koşullara bağlı olarak bir veya bir grup ifadeyi yürütmek gerektiğinde kullanılır. Bu yapının sözdizimi, onu programın bir satırında veya birkaç satırında belirtmenize izin verir:

If koşulu O zaman ifadesi If koşulu O zaman ifadesi End If

Koşul genellikle basit bir karşılaştırmadır, ancak hesaplanmış bir değere sahip herhangi bir ifade olabilir. Bu değer, sıfırsa False olarak yorumlanır ve sıfır olmayan her değer Doğru olarak kabul edilir. Koşul doğruysa, Then anahtar sözcüğünden sonraki tüm ifadeler yürütülür. Tek bir ifadeyi koşullu olarak yürütmek için hem tek satırlı sözdizimini hem de çok satırlı sözdizimini (blok yapısı) kullanabilirsiniz.

Aşağıdaki iki operatör eşdeğerdir:

VarsaTarih< Now Then anyDate = Now If anyDate < Now Then anyDate = Now End If

If ifadesinin sözdizimine dikkat edin. ... ... Sonra tek bir satır için End If ifadesini kullanmaz. Bir koşul doğruysa bir dizi ifadeyi yürütmek için If blok yan tümcesini kullanın. ... ... Sonra. ... ... Eğer Sonlandır.

VarsaTarih< Now Then anyDate = Now Timer.Enabled = False " Запретить таймер. End If

Koşul yanlışsa, Then anahtar sözcüğünden sonraki ifadeler yürütülmez ve kontrol, Sonraki satır(veya bir blok yapısında End If ifadesinden sonraki satır).

6.2 Yapı ise. ... ... Sonra. ... ... Başka

biri koşula bağlı olarak yürütülecek olan birkaç ifade bloğu tanımlar:

Eğer koşul1 O zaman ifade1 ElseIf koşul2 Sonra ifade2. ... ... Else ifadesi -n End If

Yürütüldüğünde, önce koşul1 kontrol edilir. Yanlışsa, VBA bir sonraki koşul2'yi kontrol eder ve bu, doğru bir koşul bulana kadar devam eder. VBA onu bulduğunda, uygun ifade bloğunu yürütür ve ardından End if ifadesinin ardından kontrolü ifadeye aktarır. Bu yapıda, koşullardan hiçbiri karşılanmadığında VBA'nın yürüttüğü bir Else deyim bloğu ekleyebilirsiniz.

Eğer. ... ... Sonra. ... ... ElseIf gerçekten If yapısının özel bir durumudur. ... ... Sonra. ... ... Başka. Bu yapının herhangi bir sayıda ElseIf bloğu içerebileceğini veya hatta hiç içermeyebileceğini unutmayın. Else bloğu, ElseIf bloklarının varlığına veya tersine, yokluğuna bakılmaksızın dahil edilebilir.

Alt örnek 1 () Dim a As Single, b As Single, x As Single Dim z As Double Call read ("A1", a) Call read ("B1", b) Let x = CSng (InputBox ("x'i girin") , "Veri girişi", 0))) x ise<= a Then z = Sin(x) ElseIf x >= b Sonra z = Tan (x) Aksi: z = Cos (x) End If Call Out ("C1", z) End Sub

If ifadenize istediğiniz sayıda Elself bloğu ekleyebileceğinizi unutmayın. ... ... Sonra. Ancak, Elself bloklarının sayısı o kadar fazla olabilir ki If. ... ... O zaman çok hantal ve elverişsiz hale gelecektir. Böyle bir durumda, başka bir karar verme yapısı kullanılmalıdır - Vaka Seç.

6.3 Kasa Yapısını Seçin

Select Case yapısı If yapısına bir alternatiftir. ... ... Sonra. ... ... Aksi takdirde, çok sayıda ifadeden oluşan bir bloğun yürütülmesi durumunda. Select Case yapısı, If yapısına benzer bir yetenek sağlar. ... ... Sonra. ... ... Aksi takdirde, ancak birden fazla seçeneğiniz olduğunda kodunuzu daha okunaklı hale getirir.

Select Case yapısı, yapıya girildikten sonra bir kez değerlendirilen tek bir test edilebilir ifade üzerinde çalışır. VBA daha sonra sonucu yapının Case ifadelerinde belirtilen değerlerle karşılaştırır. Bir eşleşme bulunursa, Case deyimiyle ilişkili deyim bloğu yürütülür:

Durum testi_ifadesi]] öğesini seçin. ... ... ] Son Seçim

Her ifade listesi, bir veya daha fazla değerin bir listesidir. Bir listede birden fazla değer varsa bunlar virgülle ayrılır. Her deyim bloğu birden fazla deyim içerir veya hiçbiri içermez. Test edilen ifadenin hesaplanan değerinin birkaç Case ifadesinden gelen değerlere karşılık geldiği ortaya çıkarsa, bulunan tüm eşleşmelerden ilk Case ifadesiyle ilişkili ifade bloğu yürütülür. VBA, tüm Case deyimi listelerindeki değerlerle eşleşen bir ifade değeri bulunamazsa, Case Else deyimiyle ilişkili bir deyim bloğu yürütür (isteğe bağlı olduğunu unutmayın).

Fonksiyonu hesaplamanın bir örneğini ele alalım

Alt örnek2 () Const pi2 = 1.57 Dim x As Single Dim z As Double Let x = CSng (InputBox ("x girin", "Veri girişi", 0)) Select Case x Case -pi2 z = Sin (x) Case 0 z = Cos (x) Case pi2 z = Tan (x) Case Else MsgBox "Geçersiz giriş verisi!" Exit Sub End Seç Çağrı ("D1", z) End Sub

Select Case yapısının, ifadeyi girerken ve If'de yalnızca bir kez değerlendirdiğini unutmayın. ... ... Sonra. ... ... Aksi takdirde, her Elself ifadesi için farklı bir ifade değerlendirilir. Eğer. ... ... Sonra. ... ... Else, Select Case ile değiştirilebilir, ancak If ifadesi ve her Elself ifadesi aynı ifadeyi değerlendirirse.

Karar verme, programcıların bir komut dosyasının veya bölümlerinden birinin yürütme akışını kontrol etmelerini sağlar. Yürütme, bir veya daha fazla koşullu ifade tarafından kontrol edilir.

Aşağıda Genel formçoğu programlama dilinde bulunan tipik bir karar verme yapısı.

VBA, aşağıdaki çözüm türlerini sağlar. Ayrıntılarını kontrol etmek için aşağıdaki bağlantıları tıklayın.

Eğer ... O zaman - Eğer O zaman

Bir If ifadesi, bir Boole ifadesi ve ardından bir veya daha fazla ifadeden oluşur. Koşul True olarak adlandırılırsa, If(s) koşulundaki ifadeler yerine getirilir. Koşul False olarak adlandırılırsa, If döngüsünden sonraki ifadeler yürütülür.

Sözdizimi

VBScript'teki If ifadesinin sözdizimi aşağıdadır.

If (boolean_expression) Then İfade 1 ..... ..... İfade n End If

Akış diyagramı

örnek

Private Sub if_demo_Click () Dim x Tamsayı Olarak Dim y As Tamsayı x = 234 y = 32 Eğer x> y ise MsgBox "X, Y'den Büyüktür" End If End Sub

X, Y'den Büyük

İfade bir Boole ifadesinden oluşuyorsa, bir veya daha fazla operatör takip eder.

if..else ifadesi

Bir If ifadesi, bir Boole ifadesi ve ardından bir veya daha fazla ifadeden oluşur. Koşul True olarak adlandırılırsa, If(s) koşulundaki ifadeler yerine getirilir. Koşul False olarak adlandırılırsa, Else Part bölümündeki ifadeler yürütülür.

Sözdizimi

VBScript'teki If Else ifadesinin sözdizimi aşağıdadır.

If (boolean_expression) Then İfade 1 ..... ..... İfade n Else İfade 1 ..... .... İfade n End If

Akış diyagramı

örnek

Gösteri amacıyla, bir fonksiyon kullanarak iki Excel sayısının en büyüğünü bulalım.

Private Sub if_demo_Click () Dim x Tamsayı Olarak Dim y As Tamsayı x = 234 y = 324 Eğer x> y ise MsgBox "X, Y'den Büyüktür" Else Msgbox "Y, X'ten Büyüktür" End If End Sub

Yukarıdaki kod çalıştırıldığında aşağıdaki sonucu verir.

Y, X'ten Büyük

Başka bir ifade, bir veya daha fazla operatör tarafından takip edilen bir Boole ifadesinden oluşuyorsa. Koşul True ise, If deyimlerindeki deyimler yürütülür. Koşul yanlışsa, komut dosyasının Else kısmı yürütülür.

if ... elseif..else ifadesi

Bir If ifadesi, ardından boole ifadelerinden oluşan bir veya daha fazla ElseIf ifadesi ve ardından tüm koşul yanlış olduğunda yürütülen varsayılan bir else ifadesi gelir.

Sözdizimi

VBScript'teki If Elseif-Else ifadesinin sözdizimi aşağıdadır.

If (boolean_expression) Then İfade 1 ..... ..... İfade n ElseIf (boolean_expression) Then İfade 1 ..... .... İfade n ElseIf (boolean_expression) Sonra İfade 1 ...... ... İfade n Else İfade 1 ..... .... İfade n End If

Akış diyagramı

örnek

Gösteri amacıyla, bir fonksiyon kullanarak iki Excel sayısının en büyüğünü bulalım.

Private Sub if_demo_Click () Dim x Tamsayı Olarak Dim y As Tamsayı x = 234 y = 234 Eğer x> y ise MsgBox "X, Y'den Büyüktür" ElseIf y> x Sonra Msgbox "Y, X'ten Büyüktür" Diğer Msgbox "X ve Y EŞİTTİR "End If End Sub

Yukarıdaki kod çalıştırıldığında aşağıdaki sonucu verir.

X ve Y EŞİTTİR

İfadeyi, mantıksal ifadelerden oluşan bir veya daha fazla ELSEIF ifadesi ve ardından tüm koşullar yanlış olduğunda yürütülen isteğe bağlı bir hareketsiz ifadesi izliyorsa.

iç içe if ifadeleri

Başka bir If veya ElseIf ifadesi içindeki If veya ElseIf ifadesi. İç If deyimleri, dış If deyimlerine göre yürütülür. Bu, VBScript'in karmaşık koşullarla kolayca başa çıkmasını sağlar.

Sözdizimi

VBScript'teki Nested If ifadesinin sözdizimi aşağıdadır.

If (boolean_expression) Then İfade 1 ..... ..... İfade n If (boolean_expression) Then İfade 1 ..... ..... İfade n ElseIf (boolean_expression) Sonra İfade 1 ..... .... İfade n Else İfade 1 ..... .... İfade n End If Else İfade 1 İfade n End If

örnek

Gösteri amacıyla, bir fonksiyon kullanarak pozitif bir sayının türünü bulalım.

Private Sub nested_if_demo_Click () Dim a As Integer a = 23 a> 0 ise MsgBox "Sayı bir POZİTİF Sayıdır" a = 1 ise MsgBox "Sayı Ne Asal Ne de Kompozittir" ElseIf a = 2 Sonra MsgBox "Sayı Tek Çift Asal Sayıdır "ElseIf a = 3 O halde MsgBox" Sayı En Küçük Tek Asal Sayıdır "Else MsgBox" Sayı 0,1,2 veya 3 DEĞİL< 0 Then MsgBox "The Number is a NEGATIVE Number" Else MsgBox "The Number is ZERO" End If End Sub

Yukarıdaki kod çalıştırıldığında aşağıdaki sonucu verir.

Sayı POZİTİF Bir Sayıdır
Sayı 0,1,2 veya 3 DEĞİLDİR

If veya ElseIf ifadesi başka bir if veya ELSEIF ifadesinin içindedir.

geçiş ifadesi

Bir kullanıcı, bir ifadenin değerine bağlı olarak bir grup ifadeyi yürütmek istediğinde, bir anahtar durumu kullanılır. Her değere durum adı verilir ve duruma göre bir değişken eklenir. Case Else ifadesi, test ifadesi kullanıcı tarafından belirtilen durumlardan herhangi biriyle eşleşmezse yürütülür.

Case Else, Select Case'de isteğe bağlı bir ifadedir, ancak iyi programlama uygulaması için her zaman bir Case Else ifadesi vardır.

Sözdizimi

VBScript'te Switch ifadesinin sözdizimi aşağıdadır.

Select Case ifade Vaka ifadelist1 ifade1 ifade2 .... .... ifade1n Vaka ifadelist2 ifade1 ifade2 .... .... Vaka ifadelistn ifade1 ifade2 .... .... Vaka Başka ifade1 başka ifade2 .... .. .. Bitir Seçimi

örnek

Gösteri amacıyla, bir fonksiyon kullanarak bir tamsayı tipini bulalım.

Private Sub switch_demo_Click () Dim MyVar As Integer MyVar = 1 Case Select MyVar Case 1 MsgBox "Sayı En Küçük Bileşik Sayıdır" Case 2 MsgBox "Sayı tek Çift Asal Sayıdır" Case 3 MsgBox "Sayı En Küçük Tektir Asal Numara "Case Else MsgBox" Bilinmeyen Numara "End Select End Sub

Yukarıdaki kod çalıştırıldığında aşağıdaki sonucu verir.

Sayı En Küçük Bileşik Sayıdır

Bir switch ifadesi, bir değişkenin bir değerler listesine göre eşitlik açısından kontrol edilmesini sağlar.

V Visual Basic Uygulama (VBA) için, ifadelerin yürütme sırasını değiştirmenin birkaç yolu vardır. VBA kontrol yapıları, diğer programlama dillerindeki benzer yapılara çok benzer.

Temel VBA kontrol yapıları:

  • Eğer O Zaman Else "Son
  • Sonraki İçin
  • Wend iken
  • döngü yap
  • "Seçimi Bitir" Vakasını Seçin
  • Her Sonraki İçin

    If Then Else "End If Kontrol İfadesi
    Bu ifade, belirli bir koşulu (veya bir dizi koşulu) kontrol etmenin sonuçlarına bağlı olarak ifadelerin yürütme sırasını değiştirir.

    Örnek:

    Alt TestIfThen ()

    iData = "pashulka"

    iData = "Excel" ise
    MsgBox "Bu mesajı asla görmeyeceksiniz !!!"
    ElseIf iData = "Ofis" Sonra
    MsgBox "Maalesef bu mesajı da görmeyeceksiniz !!!"
    Başka
    MsgBox "Bu mesaj yine de görünecek", iData
    Bitir

    Yorumlar:
    Eğer - anahtar kelime, kontrolün başladığını gösteren
    iData- değeri kontrol edilecek bir değişken
    Sonra- kontrolün sonunu gösteren bir anahtar kelime
    Mesaj Kutusu- İleti
    ElseIf- yeni bir kontrolün başlangıcı anlamına gelen bir anahtar kelime
    Sonra- ek bir kontrolün sonunu gösteren bir anahtar kelime
    Mesaj Kutusu- İleti
    Başka- kontrolün pozitif sonucu ile yürütülen bir talimat bloğunun sonunu ve negatif bir sonuçla yürütülen bir talimat bloğunun başlangıcını gösteren bir anahtar kelime.
    Mesaj Kutusu- İleti
    Bitir

    If Then Else "End If ifadesinde, anahtar kelimeler ElseIf ve Başka isteğe bağlıdır.

    Sonraki Kontrol Beyanı İçin
    Bu talimat, belirli eylemleri gerekli sayıda gerçekleştirmenize izin verir. Bu talimatlara genel olarak döngüler denir.

    Örnek:

    Alt TestForNext ()

    iCount için = 1 ila 100 Adım 2
    ben = ben + 1
    Sonraki

    Yorumlar:
    İçin
    iCount- döngünün tekrar sayısını belirleyen bir değişken.
    1 - sayacın başlangıç ​​değeri
    NS- sayacın başlangıç ​​ve bitiş değerini ayıran bir anahtar kelime
    100 - sayacın son değeri
    Adım- sayacın adımını tanımlayan bir anahtar kelime
    2 - karşı adım (sayı)
    Sonraki- bir anahtar kelime, ulaşıldığında sayaç değerinin adım boyutuna göre değiştiği ve ardından kontrolün tekrar döngünün başına geçtiği.
    Mesaj Kutusu

    For Next ifadesinde, anahtar kelime Adımİsteğe bağlı. Eğer yoksa, sayacın adımı 1'e eşit olacaktır.

    önemli Sayaç adımı bir sayı olmalıdır. Sayacın adımı negatif bir sayı olarak belirtilirse, her döngüde sayacın değeri azalacaktır.

    Geri sayım içeren örnek:

    Alt TestForNext2 ()

    iCount için = 300 - 1 Adım -3
    ben = ben + 1
    iCount = 153 ise, Çıkın
    Sonraki iCount

    MsgBox "Tekrar sayısı:" & i

    Dikkat et:
    Eğer iCount = 153 Sonra- bu VBA kodunda, zaten bilinen If Then Else ifadesini uyguladık
    Çıkış İçin
    Sonraki iCount- kod, anahtar kelimeden sonra bulunan bir değişken (sayaç) içerir. Benzer bir sözdizimi, kural olarak, VBA kodunda bu tür çok sayıda talimat varsa, bir döngünün sonunu görsel olarak belirlemek için kullanılır.

    Wend Kontrol Beyanı iken
    Bu talimat, belirli bir koşul karşılandığı sürece belirli eylemleri gerçekleştirmenize izin verir.

    Örnek:

    Alt TestWhileWend ()

    iCount iCount = iCount + 1 iken
    Wend

    Yorumlar:
    Süre- bir döngünün başlangıcı anlamına gelen bir anahtar kelime
    iCount - bu talimatın yürütüleceği koşul
    Wend
    Mesaj Kutusu- tekrar sayısı hakkında mesaj

    Döngü Kontrol Talimatı Yapın
    Bu talimat, yalnızca belirtilen koşul karşılandığı sürece değil, aynı zamanda çoğu zaman belirtilen koşul karşılanana kadar belirli eylemleri gerçekleştirmenize izin verir.

    Örnek:

    Alt TestDoLoop ()

    iCount> = 100'e Kadar Yapın
    iCount = iCount + 1
    Döngü

    MsgBox "Tekrar sayısı:" & iCount

    Yorumlar:
    Yapmak- bir döngünün başlangıcı anlamına gelen bir anahtar kelime
    A kadar- bir koşulun varlığını gösteren bir anahtar kelime
    iCount> = 100- bu talimatın yürütüleceği koşul
    Döngü- döngünün sonu anlamına gelen bir anahtar kelime
    Mesaj Kutusu- tekrar sayısı hakkında mesaj

    Alt TestDoLoop2 ()

    Yapmak
    iCount = iCount + 1
    iCount = 50 ise Çıkış Yap
    iCount = 100'e Kadar Döngü

    MsgBox "Tekrar sayısı:" & iCount

    Dikkat et:
    Eğer iCount = 50 Sonra- bu VBA kodunda, zaten bilinen If Then Else ifadesini tekrar uyguladık
    Çıkış Yap- döngüden erken çıkış anlamına gelen bir talimat
    iCount = 100- bu talimatın yürütüleceği koşul

    Not:
    Döngünün sonunda belirtilen koşul, en az bir kez yürütüleceğini garanti eder. While Wend, Do Loop talimatlarına dikkat edin, çünkü koşul yanlış ayarlanırsa, neredeyse bir perpetuum cep telefonu alabilirsiniz.

    "End Select Control Statement" Vakasını Seçin
    Bu ifade, değişkenin veya ifadenin değerinin sonuçlarına bağlı olarak, birkaç kod parçasından birini yürütür.

    Örnek:

    Alt TestSelectCase ()

    Vaka Seçin iNumeric
    Dava 1

    Durum 2, 5
    MsgBox "Görmemeniz gereken bu mesaj"
    Vaka 10 ila 13
    MsgBox "Görmemeniz gereken bu mesaj"
    Vaka> 14
    MsgBox "Görmeniz gereken mesaj bu"
    diğer durum
    MsgBox "Değişken End Select ise bu mesaj görünecektir.

    Yorumlar:
    Vaka Seç
    iSayısal- değeri, yürütme için bir VBA kodu parçasının seçimini belirleyen bir değişken veya ifade
    Dava 1- karşılaştırılacak değerin ilk varyantı.
    Değişkenin değeri onunla eşleşirse, Vakayı takip eden kod parçası yürütülür, ancak bir sonraki anahtar Vakadan önce, ifade işini tamamlar. Aksi takdirde kontrol devam edecektir.
    Durum 2, 5- anlamın ikinci çeşidi.
    Vaka 10 ila 13- anlamın üçüncü çeşidi.
    Vaka> 14- anlamın dördüncü çeşidi.
    Mesaj Kutusu- içinde görüntülenecek mesaj bu durumda
    diğer durum- önceki seçeneklerden hiçbiri eşleşmediyse, kod yürütmeyi ifade eden anahtar kelimeler.
    Seçimi Bitir- talimatın sonunu gösteren bir anahtar kelime

    Select Case "End Select" ifadesinde, anahtar kelime diğer durumİsteğe bağlı.

    Her Sonraki Kontrol Beyanı İçin
    Bu talimat, family veya dizi öğesinin her nesnesiyle belirli eylemleri gerçekleştirmenize izin verir.

    Range nesnesine sahip bir örnek:

    Alt TestForEachNextRange ()


    ben = ben + 1
    iCell.Value = "(! LANG: Hücre #" & i !}
    Sonraki

    MsgBox "Hücre sayısı:" & i

    Yorumlar:
    Her biri için- talimatın başlangıcını gösteren anahtar kelimeler
    iCell- bir grubun (dizi veya aile) öğelerinin değerlerinin atandığı bir değişken.Bir dizinin öğeleriyle çalışmak için değişken, Variant türünde olmalıdır.
    İçinde- bir gruptan bir değişkeni ayıran bir anahtar kelime
    Aralık ("A1: C5")- grup, yani bir dizi veya nesne ailesi.Döngünün yineleme sayısı, gruba dahil edilen öğelerin sayısına bağlıdır.Döngünün ilk yürütülmesinde, değişkene grubun ilk öğesinin değeri atanır ve ardından , sonraki tüm olanlar.
    Sonraki- kontrolün tekrar döngünün başına gittiği bir anahtar kelime.
    Mesaj Kutusu- gruptaki öğelerin sayısı hakkında mesaj.

    Bu durumda, Range nesnesindeki hücre sayısının böyle bir sayımını kullanmak doğru değildir. en iyi yol, bu nesnenin bu görevle çok daha iyi başa çıkacak bir özelliği olduğundan: Range nesnesi: özellikleri ve yöntemleri


  • Range nesnesini değiştirmeye bir örnek:

    Alt TestForEachNextRangeChanges ()

    Menzildeki Her iCell için ("A1: C5")

    ben = ben + 1: iCell.Value = ben

    iCell.Value 5 ise
    iCell.Font.Size = 15
    iCell.Interior.ColorIndex = 50
    ElseIf iCell.Value = 13 Veya iCell.Value = 5 O zaman
    iCell.Font.Size = 20
    iCell.Interior.ColorIndex = 3
    Başka
    iCell.Temizle
    Bitir

    Dikkat et:
    - Bu VBA kodunda, hücredeki değerleri kontrol etmek için zaten bilinen If Then Else ifadesini uyguladık.
    - hangi koşulun kontrolü geçtiğine bağlı olarak, Range nesnesinin çeşitli özelliklerini kullanan belirli bir kod parçası yürütülür.

    WorkSheets ailesinden bir örnek:

    Alt TestForEachNextSheet ()

    Çalışma Sayfalarındaki Her iList İçin
    ben = ben + 1
    iNameList = iNameList & Chr (10) & iList.Name
    Sonraki

    MsgBox "Çalışma sayfası sayısı:" & i & Chr (10) & _
    "Çalışma sayfası adları:" & iNameList

    Bu durumda, böyle bir çalışma sayfası sayısı kullanmak en iyi yol değildir, çünkü bu nesne aynı zamanda bu görevle çok daha iyi başa çıkacak bir özelliğe sahiptir.

    3.5.1 Koşullu ve koşulsuz şube operatörleri. Şebeke Eğer ...Sonra başka

    VBA'da koşullar kontrol ediliyor, If ... Then ... Else deyimi, iç içe If deyimleri

    Koşullu atlama operatörleri programlama dillerinde en önemli ve sık kullanılan öğelerden bazılarıdır. Genel prensipÇalışmaları basittir: bazı koşullara uygunluk kontrol edilir (herhangi bir ifadenin doğruluğu veya yanlışlığı) ve buna bağlı olarak, programın yürütülmesi bir veya başka bir dal boyunca yönlendirilir. VBA iki koşullu dal ifadesi sağlar: If… Then ... Else ve Select Case.

    Şebeke Eğer… O zaman... Else, programcılar arasında en popüler olanıdır. Tam sözdizimi şöyle görünür:

    Eğer Koşul O zaman
    Takımlar1

    burada:

    • Şart- doğruluk için test edilmiş bir ifade. Doğruysa, Komut1 yürütülür, yanlışsa - Komutlar2;
    • KoşullarN- ayrıca kontrol edilebilen ek koşullar. Yürütülürlerse (KoşulN ifadesi doğrudur), KomutlarN yürütülür.

    If ... O zaman ... Else ifadesi uygulanır:

    • bir koşula uygunluğu kontrol etmeniz gerektiğinde ve uygunluk durumunda bazı eylemlerde bulunun:

    nSıcaklık< 10 Then

    MsgBox "Bir ceket giy"

    • önceki örnekte olduğu gibi yapmanız gerektiğinde ve tutarsızlık durumunda başka bir işlem gerçekleştirin:

    nSıcaklık< 10 Then

    MsgBox "Bir ceket giy"

    MsgBox "Bir rüzgarlık takın"

    • birkaç koşula uygunluğu kontrol etmeniz gerektiğinde (boole operatörlerinin kullanımına dikkat edin):

    Eğer (nSıcaklık< 10) And (bRain = True) Then

    MsgBox "Bir ceket giy ve bir şemsiye al"

    • ilk kontrol False olarak döndüğünde, birkaç koşula daha uygun olup olmadığını kontrol etmeniz gerekir (bu durumda, ElseIf kullanmak uygundur):

    Eğer (bIGoInCar = Doğru) O zaman

    MsgBox "Araba için elbise"

    ElseIf nSıcaklık< 10 Then

    MsgBox "Bir ceket giy"

    MsgBox "Bir gömlek giyebilirsin"

    Bu örnekte, BIGoInCar bir Boolean değişkeni olduğundan ve kendisi Doğru veya Yanlış olarak değerlendirdiğinden, ilk satır şöyle görünebilir:

    Eğer bigoInCar ise...

    If ... Then ... Else kullanımına ilişkin bazı notlar:

    • Then anahtar sözcüğü If ve koşul ile aynı satırda olmalıdır. Bir sonraki satıra sürüklerseniz bir hata mesajı alırsınız;
    • kontrol edilen koşul doğruysa yürütülmesi gereken komutu If ve Then ile aynı satıra yerleştirirseniz, End If atlanabilir:

    nSıcaklık< 10 Then MsgBox "Одеть куртку"

    • birden fazla komut veya Else / ElseIf yapıları kullanırsanız, sonunda End If yazılmalıdır, aksi takdirde bir sözdizimi hatası oluşur.
    • If… Then ifadesi için, komut bloklarını vurgulamak için girinti kullanmanız şiddetle önerilir. Aksi takdirde, kodu okumak zor olacaktır.
    • Eğer ... O zaman ifadeler iç içe yerleştirilebilir:

    MyVar = 5 ise

    MsgBox “Benim Varlığım = 5”

    MyVar = 10 ise

    MsgBox "Var'ım = 10"

    Temel VBA Operatörleri

    Yorumlar (0)

    3.1. Operatör kayıt kuralları

    Operatörleri kaydederken aşağıdaki kurallara uymalısınız:

    Her yeni ifade yeni bir satıra yazılır.

    Bir satıra birden çok işleç yazmak için bunları iki nokta üst üste (:) ile ayırın.

    Operatör bir satıra sığmıyorsa, satırın sonuna bir boşluk ve alt çizgi (_) koymalı ve ardından bir sonraki satıra sığmayan bölüme devam etmelisiniz.

    3.2. Atama operatörü

    Atama operatörü, bir değişkene yeni bir değer atanması gerektiğinde kullanılır. Aşağıdaki sözdizimine sahiptir:

    DEĞİŞKEN İSMİ= İFADE

    Önce sağ taraftaki ifade değerlendirilir ve ardından sol taraftaki değişkene sonuç atanır.

    Örneğin... Atama operatörünü kullanarak aşağıdaki matematiksel ifadeyi yazın:

    VBA'da bu ifade aşağıdaki operatör olarak yazılabilir:

    Y = a ^ (1/3) + (a ^ 2 + Exp (-b)) / (Sin (a) ^ 2-Log (b))

    3 .3. G / Ç operatörleri

    3 .3.1. MsgBox operatörü ve işlevi

    Şebeke Mesaj Kutusu iletişim kutusunda bilgi çıktısını gerçekleştirir ve kullanıcının butona basması için bekleme modunu ayarlar.

    Aşağıdaki sözdizimine sahiptir:

    Mesaj Kutusu Mesaj [, Düğmeler] [, Başlık]

    Argümanlar:

    İleti - penceredeki çıktıyı belirten gerekli argüman Duyuru... Bir işaretle birleştirilmiş birkaç metin satırından oluşabilir & ... Bu argümanda kullanım Chr (13) bilgileri görüntülerken yeni bir satıra yol açar.

    Düğmeler - bu bağımsız değişkenin değeri, pencerede görünen düğme kategorilerini belirler. Düğmenin bağımsız değişkeninin değeri, pencerede herhangi bir simgenin görünüp görünmeyeceğini de belirler. Mesaj penceresinde hangi düğmelerin görüntüleneceğini belirtmezseniz, OK düğmesine karşılık gelen varsayılan değer kullanılır. Tablo 3.1, mesaj penceresindeki olası düğme ve simge kombinasyonlarını gösterir.

    başlık - pencerenin başlığını ayarlar.

    İşlev Mesaj Kutusu iletişim kutusunda hangi düğmenin tıklandığını gösteren bir Tamsayı döndürür.

    Tablo 3.1. Bir düğme değişkeni için geçerli değerler

    Görüntülemek

    Argüman

    Tamam düğmesi

    Tamam ve İptal düğmeleri

    Evet ve Hayır düğmeleri

    Evet, Hayır ve İptal düğmeleri

    Durdur, Yinele ve Yoksay düğmeleri

    VbAbortYeniden DeneYoksay

    Yinele ve İptal düğmeleri.

    bilgi işareti

    Soru işareti

    Ünlem işareti

    Örneğin... Geçerli tarih hakkında bir mesaj görüntüleyin.

    MsgBox "Bugün takvimde" & Tarih, "Dikkat"

    Sonuç olarak aşağıdaki pencere görüntülenecektir (Şekil 3.1).

    OK düğmesine tıkladıktan sonra, mesaj kutusu kapanacak ve program, MsgBox çağrısının hemen arkasındaki ifadeden yürütmeye devam edecektir.

    3.3.2. İşlev Giriş Kutusu

    İşlev Giriş Kutusu giriş penceresini kullanarak değişkenlerin değerlerini girer ve aşağıdaki sözdizimine sahiptir:

    Değişken ismi = Giriş Kutusu (Mesaj [, Başlık] )

    Argümanlar:

    İleti - gerekli argüman. Pencerede, genellikle girilen değerin anlamını açıklayan bir bilgi mesajı ayarlar.

    başlık - pencerenin başlığını ayarlar.

    Örneğin, Klavyeden N değişkeninin değerini 10 varsayılan değeriyle girin.

    Bunu yapmak için aşağıdaki operatörü kullanabilirsiniz:

    N = InputBox ("N'yi Girin", "İlk verilerin girişi", 10)

    Sonuç olarak, N değişkeninin değerini girmek için aşağıdaki pencere görüntülenecektir (Şekil 3.2).

    Varsayılan değer kullanıcıya uygunsa, OK düğmesine tıkladıktan sonra giriş penceresi kapanacak, N değişkenine 10 değeri atanacak ve program yürütme, çağrının hemen ardından operatörden devam edecektir. Giriş Kutusu.

    Varsayılan değer kullanıcıya uymuyorsa, OK düğmesine basmadan önce N değişkeni için istenen değeri girmelisiniz.

    3 .4. Koşullu EĞER ifadesi

    Operatör, dallanma hesaplama sürecini VBA'da uygulamak için Eğer… O zaman… Başka, durum kontrolünün en basit şeklidir. Aşağıdaki sözdizimine sahiptir:

    EğerŞARTSonraOPERATÖR_1ElseOPERATÖR_2

    OPERATÖR_1 yürütülürse ŞART doğru, aksi halde yürütülür OPERATÖR_2. Bu durumda If… Then… Else ifadesi tek satırda yazılır.

    ŞART bir boole ifadesidir. Bir ifadenin sonucu her zaman boole olur. İfade basit veya karmaşık olabilir. kayıt yaparken basit terimler tabloda belirtilen ilişkinin tüm olası işlemleri kullanılabilir. 3.2.

    tablo3 .2. mantıksal ilişki

    Operasyon

    İsim

    İfade

    Sonuç

    A, B'ye eşitse doğrudur

    A, B'ye eşit değilse doğrudur

    A, B'den büyükse doğrudur

    A, B'den küçükse doğrudur

    Daha fazla veya eşit

    A, B'den büyük veya ona eşitse doğrudur

    Küçük veya eşit

    A, B'den küçük veya ona eşitse doğrudur

    Mantıksal işlemler ve parantezler kullanılarak basit olanlardan karmaşık koşullar oluşturulur. Mantıksal işlemlerin listesi tabloda verilmiştir. 3.3.

    tablo3 .3. mantıksal işlemler

    İsim

    İfade

    Sonuç

    Mantıklı
    olumsuzlama

    mantıksal VE

    mantıksal VEYA

    Koşullu bir ifadede, herhangi bir ifade yerine bir ifade bloğu kullanılmasına izin verilir. Bu durumda, koşul operatörü şöyle görünür:

    EğerŞARTSonra

    OPERATOR_BLOCK_1

    OPERATOR_BLOCK_2

    son IF

    Koşullu bir ifadede birkaç koşul kontrol edilebilir. Bu durumda, koşul operatörü şöyle görünür:

    EğerCONDITION_1Sonra

    OPERATOR_BLOCK_1

    ElseIfCONDITION_2Sonra

    OPERATOR_BLOCK_2

    Başka

    SonEğer

    örnek 1... Şekildeki algoritma için programın bir kısmını yazın. 3.3.

    Örnek 2.Şekildeki algoritma için programın bir kısmını yazın. 3.4.

    3.5. Vaka bildirimi seçin

    Select Case deyimi, sonlu bir geçerli değerler kümesine sahip bir ifadenin değerine bağlı olarak farklı eylemler gerçekleştirmeniz gerektiğinde kullanımı uygundur. Aynı zamanda koşullu ifadelere atıfta bulunur, ancak farklı bir biçimi vardır:

    Vaka SeçTESTED_EXPRESSION

    DurumVALUES_1

    OPERATÖRLER_1

    DurumDEĞERLER_ 2

    OPERATÖRLER_ 2

    . . .

    DurumVALUES_N

    OPERATÖRLER_N

    [ DurumBaşka

    AKSİ HALDE_ OPERATÖRLER]

    Seçimi Bitir

    TESTED_EXPRESSION real hariç herhangi bir skaler tipte olabilir. DEĞERLER virgülle ayrılmış rastgele sayıda değer veya aralıktan oluşur.

    Bir çeşit DEĞERLER türle eşleşmelidir TESTED_EXPRESSION.

    İlk olarak, hesaplar TESTED_EXPRESSION... Değeri değerlerden biriyle eşleşirse VALUES_I, sonra OPERATÖRLER_I Seçimi Bitir... Değeri herhangi bir değerle eşleşmiyorsa VALUES_I, sonra OTHERWISE_OPERATORS ve kontrol, sonra bekleyen operatöre aktarılır. Seçimi Bitir

    Örneğin.Şekildeki algoritma için programın bir kısmını yazın. n değişkeninin değerine bağlı olarak S değişkeninin değerini belirleyen 3.5.

    3.6. Döngü Operatörleri

    Döngüsel bir hesaplama sürecini, yani bir veya daha fazla operatörün birden fazla yürütülmesini uygulamak için döngü operatörü kullanılır. için… Sonraki aşağıdaki sözdizimine sahip:

    İçinSAYAÇ = START_VALUETÖCON_VALUEAdımADIM

    OPERATÖR BLOK

    OPERATÖR BLOK

    SonrakiTEZGAH

    For ... Sonraki döngüsü, değişkenin değerleri üzerinde yinelenir TEZGAH, döngünün bir parametresi olan, belirtilen değişim adımı ile başlangıçtan bitiş değerine kadar. Bu, döngü gövdesinin ifade bloğunun sayacın her yeni değerinde yürütülmesini sağlar. Eğer AdımADIM inşaatta mevcut değilse, varsayılan olarak adımın 1 olduğu varsayılır. Operatöre göre Çıkış İçin daha önce döngü ifadesinden çıkmak mümkündür. TEZGAH son değere ulaşır *

    Bir dizi benzer nesneden, örneğin bir aralıktaki hücrelerden veya dizi öğelerinden nesneler üzerinde yineleme yapmak için, döngü operatörünü kullanmak uygundur. İçin ...Her biri… Sonraki.

    Her biri içinelemanİçindeGrup

    ENGELLEMEK_ OPERATÖRLER

    OPERATÖR BLOK

    Sonrakieleman

    VBA'da, önceden belirlenmiş sayıda tekrar ile döngüleri düzenlemek için diğer döngü operatörleri kullanılır:

    ön koşullu döngüler - YapmakSüreDöngü,

    YapmakA kadarDöngü;

    sonkoşullu döngüler - YapmakDöngüSüre,

    YapmakDöngüA kadar.

    Bu döngü deyimlerinin sözdizimi aşağıdadır:

    "Ön koşullu döngüYapmak Süre Döngü

    YaparkenŞART

    OPERATÖR BLOK

    OPERATÖR BLOK

    "Ön koşullu döngüYapmak A kadar Döngü

    YapmakA kadarŞART

    OPERATÖR BLOK

    OPERATÖR BLOK

    "Sonkoşullu döngüYapmak Döngü süre

    ENGELLEMEK_ OPERATÖRLER

    OPERATÖR BLOK

    Döngü süreŞART

    "Sonkoşullu döngüYapmak Döngüye kadar

    ENGELLEMEK_ OPERATÖRLER

    OPERATÖR BLOK

    Döngüye kadarŞART

    Şebeke YapmakWhile ... Döngü sürece, bir ifade bloğunun birden çok tekrarını sağlar. ŞART saygı duyulur ve operatör



    Diğer Haberler