VBA If, ElseIf, Else (Eğer İfadeleri için Nihai Kılavuz)

VBA If Bildirimi

eğer o zaman

VBA If İfadeleri, sonuçlara göre farklı kodlar çalıştırarak ifadelerin DOĞRU veya YANLIŞ olup olmadığını test etmenize olanak tanır.Basit bir örneğe bakalım:
1 Range("a2").Value > 0 ise Range("b2").Value = "Pozitif"
Bu, Aralık A2'deki değerin 0'dan büyük olup olmadığını test eder. Eğer öyleyse, Aralık B2'yi “Pozitif” olarak ayarlamakNot: Koşulları test ederken =, >, <, , = karşılaştırma operatörlerini kullanacağız. Makalede daha sonra bunları daha ayrıntılı olarak tartışacağız.İşte basit bir tek satırlık If ifadesinin sözdizimi:
1 [test_ifadesi] ise [eylem]
Okumayı kolaylaştırmak için If İfadelerini iki satıra genişletmek için bir Satır Devam karakteri (alt çizgi) kullanabilirsiniz (yukarıdaki resimde yaptığımız gibi):
12 [test_ifadesi] ise _[eylem]
12 Eğer Range("a2").Value > 0 O zaman _Aralık("b2").Value = "Pozitif"

Bitir

Yukarıdaki "tek satırlı" if ifadesi, bir koşulu test ederken iyi çalışır. Ancak, EĞER İfadeleriniz birden fazla koşulla daha karmaşık hale geldiğinden, if ifadesinin sonuna bir “Eğer End If” eklemeniz gerekecektir:
123 Eğer Range("a2").Value > 0 O zamanAralık("b2").Value = "Pozitif"Bitir

İşte sözdizimi:

123 [test_ifadesi] ise[eylem]Bitir

End If, if ifadesinin sonunu belirtir.

Şimdi bir ElseIF ekleyelim:

ElseIF - Birden Çok Koşul

ElseIf, mevcut bir If deyimine eklenir. ElseIf, bir koşulun karşılanıp karşılanmadığını test eder YALNIZCA önceki koşullar karşılanmadıysa.Önceki örnekte bir hücre değerinin pozitif olup olmadığını test ettik. Şimdi ayrıca bir ElseIf ile hücre değerinin negatif olup olmadığını da test edeceğiz:
12345 Eğer Range("a2").Value > 0 O zamanAralık("b2").Value = "Pozitif"ElseIf Range("a2").Value < 0 O zamanAralık("b2").Value = "Negatif"Bitir

Birden çok koşulu test etmek için birden çok ElseIf kullanabilirsiniz:

1234567891011 Alt If_Multiple_Conditions()Eğer Range("a2").Value = "Kedi" O zamanAralık("b2").Value = "Miyav"ElseIf Range("a2").Value = "Köpek" SonraAralık("b2").Value = "Hav"ElseIf Range("a2").Value = "Ördek" SonraAralık("b2").Value = "Saçma"BitirAlt Bitiş

Şimdi bir ekleyeceğiz Başka:

Başka

NS Başka eğer koşacak başka hiçbir önceki koşul karşılanmadı.

Örneğimizi, hücre değeri pozitif veya negatif değilse, sıfır olması gerektiğini belirtmek için Else kullanarak bitireceğiz:

1234567 Eğer Range("a2").Value > 0 O zamanAralık("b2").Value = "Pozitif"ElseIf Range("a2").Value < 0 O zamanAralık("b2").Value = "Negatif"BaşkaAralık("b2").Value = "Sıfır"Bitir

If-Else

En yaygın If deyimi türü basit bir If-Else'dir:

1234567 Alt If_Else()Eğer Range("a2").Value > 0 O zamanAralık("b2").Value = "Pozitif"BaşkaRange("b2").Value = "Pozitif Değil"BitirAlt Bitiş

İç içe geçmiş IF'ler

If deyimlerini birbirinin içine de “iç içe geçirebilirsiniz”.

1234567891011 Alt Yuvalanmış_Ifs()Eğer Range("a2").Value > 0 O zamanAralık("b2").Value = "Pozitif"BaşkaEğer Range("a2").Value < 0 O zamanAralık("b2").Value = "Negatif"BaşkaAralık("b2").Value = "Sıfır"BitirBitirAlt Bitiş

EĞER - Veya, Ve, Xor, Değil

Sonra mantıksal operatörleri tartışacağız: Or, And, Xor, Not.

Eğer Veya

NS Veya operatör testleri eğer en az bir koşul karşılandı.

Aşağıdaki kod, Aralık A2'deki değerin 5.000'den az veya 10.000'den büyük olup olmadığını test edecektir:

123 If Range("a2").Value 10000 O zamanAralık("b2").Value = "Aralık Dışı"Bitir

Bir satıra birden fazla Ors ekleyebilirsiniz:

123 If Range("a2").Value 10000 Veya Range("a2").Value = 9999 O zamanAralık("b2").Value = "Aralık Dışı"Bitir

Birden fazla Or kullanacaksanız, kodunuzun okunmasını kolaylaştırmak için bir satır devam karakteri kullanmanız önerilir:

123456 If Range("a2").Value < 5000 Veya _Aralık ("a2"). Değer > 10000 Veya _Aralık("a2").Value = 9999 SonraAralık("b2").Value = "Aralık Dışı"Bitir

eğer ve

And operatörü, TÜM koşullar karşılandı.

123 If Range("a2").Value >= 5000 And Range("a2").Value <= 10000 O zamanAralık("b2").Value = "Aralık İçinde"Bitir

Eğer Xor

Xor operatörü, tam olarak bir koşul karşılandı. Sıfır koşul karşılanırsa Xor YANLIŞ, iki veya daha fazla koşul karşılanırsa Xor da yanlış döndürür.

VBA programlamasında Xor'un nadiren kullanıldığını gördüm.

Değilse

Not operatörü, YANLIŞ'ı DOĞRU'ya veya DOĞRU'yu YANLIŞ'a dönüştürmek için kullanılır:

123 Alt IF_Not()MsgBox Değil (Doğru)Alt Bitiş

Not operatörünün geçiş yapmak için ifadeyi çevreleyen parantez gerektirdiğine dikkat edin.

Not operatörü, If ifadelerine de uygulanabilir:

123 Değilse (Range("a2").Value >= 5000 And Range("a2").Value <= 10000) O zamanAralık("b2").Value = "Aralık Dışı"Bitir

Karşılaştırmalar ise

Karşılaştırma yaparken genellikle karşılaştırma operatörlerinden birini kullanırsınız:

Karşılaştırma Operatörü Açıklama
= Eşittir
Eşit değil
> daha büyük
>= Büyüktür veya Eşittir
< Daha az
<= Küçük veya Eşit

Ancak, herhangi bir ifadeyi de kullanabilirsiniz. veya işlev DOĞRU veya YANLIŞ ile sonuçlanan

If - Boole İşlevi

If İfadeleri için ifadeler oluştururken, DOĞRU veya Yanlış oluşturan herhangi bir işlevi de kullanabilirsiniz. VBA bu işlevlerden birkaçına sahiptir:

İşlev Açıklama
Tarih İfade geçerli bir tarihse DOĞRU döndürür
Boş Boş hücreler veya tanımsız değişkenler olup olmadığını kontrol edin
Hatası Hata değerlerini kontrol edin
IsNull NULL Değerini Kontrol Edin
Sayısaldır Sayısal değeri kontrol edin

Bu şekilde çağrılabilirler:

1 IsEmpty(Range("A1").Value) ise MsgBox "Hücre Boş"

Excel ayrıca WorksheetFunction kullanılarak çağrılabilecek birçok ek işleve sahiptir. İşte Excel IsText İşlevinin bir örneği:

12 If Application.WorksheetFunction.IsText(Range("a2").Value) Sonra _MsgBox "Hücre Metindir"

Ayrıca kendi Kullanıcı Tanımlı İşlevlerinizi (UDF'ler) oluşturabilirsiniz. Aşağıda DOĞRU döndüren basit bir Boole işlevi oluşturacağız. Sonra bu işlevi If ifademizde çağıracağız:

1234567891011 Alt If_Function()TrueFunction iseMsgBox "Doğru"BitirAlt BitişBoolean Olarak TrueFunction() İşleviTrueFunction = DoğruBitiş İşlevi

Metin Karşılaştırma

Sayıları karşılaştırmaya benzer bir metni de karşılaştırabilirsiniz:
1 Mesaj kutusu "a" = "b"
1 Mesaj kutusu "a" = "a"
Metni karşılaştırırken, “Büyük/küçük harfe” (üst veya alt) dikkat etmelisiniz. Varsayılan olarak, VBA, farklı durumlara sahip harfleri eşleşmeyen olarak kabul eder. Başka bir deyişle, “A” “a”.VBA'nın büyük/küçük harf kullanımını yoksaymasını istiyorsanız, modülünüzün en üstüne Seçenek Karşılaştırma Metni bildirimini eklemelisiniz:
1 Seçenek Metni Karşılaştır

Bu beyanı yaptıktan sonra “A” = “a”:
12345 Seçenek Metni KarşılaştırAlt If_Text()MsgBox "a" = "A"Alt Bitiş

İsterseniz VBA

VBA Like Operator, metnin tam olmayan karşılaştırmalarını yapmanızı sağlar. Daha fazla bilgi edinmek için “Operatör Beğen” bağlantısını tıklayın, ancak aşağıda temel bir örnek göstereceğiz:

12345678 Dize olarak Dim strNamestrName = "Bay Charles"strName "Mr*" Gibiyse O zamanMsgBox "Doğru"BaşkaMsgBox "Yanlış"Bitir

Burada yıldız işareti “*” joker karakteri kullanıyoruz. *, herhangi bir sayıdaki herhangi bir karakter anlamına gelir. Dolayısıyla yukarıdaki If ifadesi TRUE değerini döndürür. Like operatörü, metinle uğraşmak için son derece güçlü, ancak çoğu zaman az kullanılan bir araçtır.

Döngüler

VBA Döngüleri, eylemleri tekrarlamanıza izin verir. IF-ELSE'leri Döngülerle birleştirmek, birçok hesaplamayı hızlı bir şekilde işlemek için harika bir yoldur.

Pozitif / Negatif örneğimizle devam ederek, bir dizi hücre arasında döngü yapmak için Her Döngü İçin bir ekleyeceğiz:

1234567891011121314 Alt If_Loop()Aralık olarak Hücreyi KarartAralıktaki Her Hücre İçin("A2:A6")Cell.Value > 0 iseCell.Offset(0, 1).Value = "Pozitif"ElseIf Cell.Value < 0 O zamanCell.Offset(0, 1).Value = "Negatif"BaşkaCell.Offset(0, 1).Value = "Sıfır"BitirSonraki HücreAlt Bitiş

Else Örnekler

Şimdi daha spesifik örneklerin üzerinden geçeceğiz.

Hücrenin Boş olup olmadığını kontrol edin

Bu kod, bir hücrenin boş olup olmadığını kontrol edecektir. Boşsa hücreyi yok sayar. Boş değilse, hücre değerini sağdaki hücreye verir:
1234567 Alt If_Cell_Empty()Eğer Range("a2").Value "" O zamanAralık("b2").Değer = Aralık("a2").DeğerBitirAlt Bitiş

Hücrenin Belirli Metin İçerip İçermediğini Kontrol Edin

Instr İşlevi, başka bir dizede bir metin dizesinin bulunup bulunmadığını test eder. Bir hücrenin belirli bir metin içerip içermediğini kontrol etmek için bir If ifadesiyle birlikte kullanın:
123 Instr(Range("A2").value,"text") > 0 iseMsgbox "Metin Bulundu"Bitir

Hücrenin metin içerip içermediğini kontrol edin

Bu kod, bir hücrenin metin olup olmadığını test eder:
1234567 Alt If_Cell_Is_Text()If Application.WorksheetFunction.IsText(Range("a2").Value) SonraMsgBox "Hücre Metindir"BitirAlt Bitiş

Eğer Goto

Kodun başka bir bölümüne "Git" için If ifadesinin sonucunu kullanabilirsiniz.
12345678910 Alt IfGoTo ()Eğer IsError(Cell.value) iseGit AtlaBitir'Bazı KodlarAtlamak:Alt Bitiş

Hücre Boşsa Satırı Sil

Ifs ve döngüleri kullanarak bir hücrenin boş olup olmadığını test edebilir ve boşsa tüm satırı silebilirsiniz.
123456789 Alt DeleteRowIfCellBlank()Dim Hücre Aralık OlarakAralıktaki Her Hücre İçin("A2:A10")Cell.Value = "" ise Cell.EntireRow.DeleteSonraki HücreAlt Bitiş

MessageBox Evet / Hayır ise

VBA Mesaj Kutuları ile kullanıcıdan çeşitli seçenekler arasından seçim yapmasını isteyebilirsiniz. Evet/Hayır Mesaj Kutusu, kullanıcıdan Evet veya Hayır'ı seçmesini ister. Kullanıcıya prosedürü çalıştırmaya devam etmek isteyip istemediğini sormak için bir prosedüre bir Evet / Hayır Mesaj Kutusu ekleyebilirsiniz. Kullanıcının girdisini bir If deyimi kullanarak yönetirsiniz.İşte uygulamada Evet/Hayır Mesaj Kutusu:
123456789101112 Alt MsgBoxVariable()Dim cevap Tamsayı olarakcevap = MsgBox("Devam etmek istiyor musunuz?", vbQuestion + vbYesNo)Cevap = vbYes iseMsgBox "Evet"BaşkaMsgBox "Hayır"BitirAlt Bitiş

VBA If, ElseIf, Else Access VBA'da

If, ElseIf ve Else işlevleri, Access VBA'da Excel VBA'dakiyle tamamen aynı şekilde çalışır.

Bir Kayıt Kümesi'nde kayıt olup olmadığını kontrol etmek için bir If deyimi kullanabilirsiniz.

wave wave wave wave wave