VBA Mantıksal Operators: VE, VEYA, DEĞİL, Excel VBA'da DEĞİLSE
⚡ Akıllı Özet
VBA Mantıksal OperaAND, OR ve NOT operatörleri, birden fazla koşulu tek bir Doğru veya Yanlış sonuçta birleştirir. Bu sayfada, çalıştırılabilir komut düğmesi örnekleri, tam bir doğruluk tablosu ve daha az bilinen XOR, EQV ve IMP operatörleri açıklanmaktadır.

Excel VBA Mantıksal Operaları
Diyelim ki bir müşteri siparişini işleme koymak istiyorsunuz. Bunun için öncelikle sipariş ettiğiniz ürünün mevcut olup olmadığını kontrol etmelisiniz. Eğer öyleyse, elinizdeki miktarın yeterli olup olmadığını da kontrol etmek istersiniz. Mantıksal operatörler bu gibi durumlarda kullanışlıdır. Mantıksal operatörler birden fazla koşulu değerlendirmek için kullanılır.
Her bir koşul kendi başına şu unsurlardan oluşur: karşılaştırma operatörleri ve Doğru veya Yanlış değerini döndürür. Ardından mantıksal bir operatör bu sonuçları birleştirerek nihai bir cevap oluşturur.
Ana Excel VBA mantıksal operatörleri AND, OR, NOT aşağıdaki tabloda listelenmiştir:
| S / N | Kullanım | Açıklama | Örnek E-posta | Çıktı |
|---|---|---|---|---|
| 1 | VE | AND: Birden fazla koşulu birleştirmek için kullanılır. Tüm koşullar doğruysa AND, doğru olarak değerlendirilir. Koşullardan herhangi biri yanlışsa AND, yanlış olarak değerlendirilir | Eğer (1 = 1) ve (0 = 1) ise, o zaman | yanlış |
| 2 | OR | VEYA: Birden fazla koşulu birleştirmek için kullanılır. Koşullardan herhangi biri doğru olarak değerlendirilirse OR işlevi doğru değerini döndürür. Eğer hepsi yanlışsa VEYA yanlış değerini döndürür | Eğer (1 = 1) Veya (5 = 0) ise O halde | gerçek |
| 3 | DEĞİL | NOT: Bu ters fonksiyon gibi çalışır. Koşul doğruysa false değerini, koşul yanlışsa true değerini döndürür. | Eğer (0 = 0) değilse, o zaman | yanlış |
Yukarıdaki üç açıklamayı, girdiler ve sonuçlardan oluşan tek bir tablo olarak akılda tutmak daha kolaydır.
VBA Mantıksal İşlemleri için Doğruluk Tablosu Operaları
Doğruluk tablosu, her bir girdi kombinasyonunu ve her bir operatörün döndürdüğü sonucu listeler. Bunu bir kez okumak, daha sonra yazacağınız herhangi bir koşuldaki tahmini ortadan kaldırır.
| Koşul A | Koşul B | A ve B | A veya b | bir değil |
|---|---|---|---|---|
| Gerçek | Gerçek | Gerçek | Gerçek | Yanlış |
| Gerçek | Yanlış | Yanlış | Gerçek | Yanlış |
| Yanlış | Gerçek | Yanlış | Gerçek | Gerçek |
| Yanlış | Yanlış | Yanlış | Yanlış | Gerçek |
İki kalıbı ezberlemekte fayda var. VE Dört satırdan yalnızca birinde True değeri üretiyor, bu nedenle seçim alanını daraltıyor. OR Yalnızca bir satırda False değeri üretir, bu nedenle bir satırı genişletir. DEĞİL İki koşul yerine tek bir koşul alır, bu yüzden kendine ait bir sütunu vardır.
VBA Mantıksal Operators Örnek Kaynak Code
Basitlik adına, sabit kodlanmış sayıları karşılaştıracağız.
“Ekle seçeneğinden” sayfaya ActiveX düğmeleri ekleyin.
Özellikleri aşağıdaki resimde gösterildiği gibi ayarlayın

Aşağıdaki tabloda değiştirmeniz gereken özellikler ve güncellemeniz gereken değerler gösterilmektedir.
| S / N | Control | Varlığınızı | Özellik |
|---|---|---|---|
| 1 | KomutDüğmesi1 | İsim | btnAND |
| Başlık | VE Operator (1 = 1) Ve (0 = 0) | ||
| 2 | KomutDüğmesi2 | İsim | btnOR |
| Başlık | OR Operator (1 = 1) Veya (5 = 0) | ||
| 3 | KomutDüğmesi3 | İsim | btnDEĞİL |
| Başlık | DEĞİL Operato Değil (0 = 0) |
Aşağıdaki kodu btnAND_Click'e ekleyin
Private Sub btnAND_Click() If (1 = 1) And (0 = 0) Then MsgBox "AND evaluated to TRUE", vbOKOnly, "AND operator" Else MsgBox "AND evaluated to FALSE", vbOKOnly, "AND operator" End If End Sub
VBA Eğer VE Operator
- “Eğer (1 = 1) ve (0 = 0) ise O halde” if ifadesi iki koşulu (1 = 1) ve (0 = 0) birleştirmek için AND mantıksal operatörünü kullanır. Her iki koşul da doğruysa 'Else' anahtar sözcüğünün üzerindeki kod yürütülür. Her iki koşul da doğru değilse 'Else' anahtar sözcüğünün altındaki kod yürütülür.
Burada her iki koşul da doğrudur, bu nedenle düğmeye tıkladığınızda "VE doğru olarak değerlendirildi" mesajı görünür.
Aşağıdaki kodu btnOR_Click'e ekleyin
Private Sub btnOR_Click() If (1 = 1) Or (5 = 0) Then MsgBox "OR evaluated to TRUE", vbOKOnly, "OR operator" Else MsgBox "OR evaluated to FALSE", vbOKOnly, "OR operator" End If End Sub
VBA VEYA ise Operator
- “Eğer (1 = 1) Veya (5 = 0) ise” `if` ifadesi, iki koşulu birleştirmek için `OR` mantıksal operatörünü kullanır: `(1 = 1)` veya `(5 = 0)`. Koşullardan herhangi biri doğruysa, `else` anahtar kelimesinin üzerindeki kod yürütülür. Her iki koşul da yanlışsa, `else` anahtar kelimesinin altındaki kod yürütülür.
Birinci koşul doğru, ikinci koşul yanlış olduğundan, OR yine doğru sonuç verir ve mesajda "OR işlemi DOĞRU olarak değerlendirildi" ifadesi yer alır.
Aşağıdaki kodu btnNOT_Click'e ekleyin
Private Sub btnNOT_Click() If Not (0 = 0) Then MsgBox "NOT evaluated to TRUE", vbOKOnly, "NOT operator" Else MsgBox "NOT evaluated to FALSE", vbOKOnly, "NOT operator" End If End Sub
DEĞİLSE VBA Operator
- “Değilse (0 = 0) O halde” VBA'nın `If Not` fonksiyonu, `if` ifadesinin koşulunun sonucunu tersine çevirmek için `NOT` mantıksal operatörünü kullanır. İç koşul (0 = 0) doğru olduğundan, `Not` onu yanlış yapar ve `Else` anahtar kelimesinin altındaki kod çalıştırılır. İç koşul yanlış olsaydı, `Not` onu doğru yapardı ve bunun yerine `Else`'nin üstündeki kod çalışırdı.
Bu üç düğmenin her biri sabit bir değeri test eder. Gerçek koşullar çalışma sayfasından okunur ve her iki operatör ailesini de karıştırır.
Mantıksal Düşünme ve Karşılaştırmayı Nasıl Birleştirebilirsiniz? Operaları
Üretim makroları nadiren önceden tanımlanmış bir sayıyı test eder. Bir değeri okur, karşılaştırır ve bu karşılaştırmaların birkaçını tek bir kararda birleştirir. Aşağıdaki makro, yalnızca ürün mevcut olduğunda, miktar yeterli olduğunda ve müşteri hesabı beklemede olmadığında siparişi onaylar.
Sub ApproveOrder() Dim QtyOnHand As Long Dim QtyOrdered As Long Dim OnHold As Boolean QtyOnHand = Sheet1.Range("B2").Value QtyOrdered = Sheet1.Range("B3").Value OnHold = Sheet1.Range("B4").Value ' All three parts must hold for the order to pass If (QtyOrdered > 0) And (QtyOnHand >= QtyOrdered) And Not OnHold Then Sheet1.Range("B5").Value = "Approved" Else Sheet1.Range("B5").Value = "On hold" End If End Sub
Birleşik metnin okunabilir ve doğru olmasını sağlayan üç kural vardır.
- Her karşılaştırmayı parantez içine alın: VBA, mantıksal operatörlerden önce karşılaştırma operatörlerini değerlendirir, ancak parantezler gruplamayı zorlaştırır.ping Bu durum daha sonra kötüleştiğinde hata yapılmasını önlemek için, sorunun ne kadar açık ve net olduğunu göstermek önemlidir.
- "Ve" (And) operatörünün "veya" (Or) operatörüne göre önceliğine dikkat edin: A veya B ve C şöyle okunur A Veya (B ve C)Eğer bunu kastettiyseniz... (A veya B) ve CParantezler zorunludur.
- Mantıksal bir değere değil, bir sayıya uygulamayın: Beklemede Değil Doğal bir şekilde okunuyor. Kaçının. 5 değilÇünkü Not operatörü sayılar üzerinde bit düzeyinde bir işlem gerçekleştirir ve False yerine -6 döndürür.
⚠️Uyarı: VBA kısa devre yapmaz. Eğer (ws boşsa) veya (ws.Name "Veri" ise)İkinci kısım, birinci kısım doğru olsa bile çalışmaya devam eder ve bu da 91 numaralı çalışma zamanı hatasına neden olur. Bu tür korumaları iç içe If ifadelerine ayırın.
Xor, Eqv ve Imp OperaVBA'da tors
AND, OR ve NOT neredeyse her günlük durumu kapsar, ancak VBA, bazen bir kuralı iç içe geçmiş If ifadelerinden çok daha açık bir şekilde ifade eden üç mantıksal operatör daha sunar.
| Kullanım | True değerini döndürür. | Örnek E-posta | Çıktı |
|---|---|---|---|
| xor | İki koşuldan yalnızca biri doğrudur, asla ikisi birden doğru değildir. | (1 = 1) X veya (5 = 0) | Gerçek |
| Eşdeğer | Her iki koşulun da değeri aynıdır, ikisi de doğru veya ikisi de yanlış. | (1 = 1) Eşittir (2 = 2) | Gerçek |
| ith | Birinci koşul ikincisini gerektirir; yalnızca Doğru İmp Yanlış yanlıştır. | (1 = 1) Imp (5 = 0) | Yanlış |
XOR, üçü arasında en pratik olanıdır. "İndirim, personel üyesine veya sadakat üyesine uygulanır, ancak her ikisi de olan birine uygulanmaz" gibi bir kurala uygundur. Eqv ve Imp çoğunlukla eski kodlarda ve mantık alıştırmalarında karşımıza çıkar, bu nedenle onları tanımak, yazmaktan daha önemlidir.
Yukarıdaki kodu içeren Excel'i indirin
