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 ayarlamak

Not: 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:
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.
