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ı:
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ı |
|||||
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üre … Döngü,
YapmakA kadar … Döngü;
sonkoşullu döngüler - Yapmak … DöngüSüre,
Yapmak … Dö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