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.

  • 🔗 Amaç: Mantıksal operatörler, tek bir If ifadesi içinde birden fazla koşulu değerlendirir.
  • ✅ VE Operator: Yalnızca birleştirdiği tüm koşullar doğru olduğunda True değerini döndürür.
  • ➕ OR Operator: Koşullardan en az biri doğru olduğunda True değerini döndürür.
  • 🔄 DEĞİL Operator: Sonucu tersine çevirir; Doğruyu Yanlışa, Yanlışı da Doğruya dönüştürür.
  • 📊 Doğruluk şeması: Tek bir referans tablosu, her bir operatörün her bir giriş kombinasyonu için sonucunu gösterir.
  • 🧮 Extra Operator: Xor, Eqv ve Imp fonksiyonları sırasıyla özel, eşdeğer ve örtük koşulları ele alır.
  • ⚠️ Kısa Devre Yok: VBA, bir koşulun her bölümünü değerlendirir; bu nedenle, bir güvenlik testi iç içe bir If bloğunun içinde yer almalıdır.

VBA Mantıksal Operators: Excel VBA'da AND, OR, NOT

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

VBA Mantıksal Operaları
VBA Mantıksal Operaları

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

SSS

Pratik bir sınır yok, ancak okunabilirlik üç veya dörtten sonra hızla düşüyor. Uzun bir koşulu açıklayıcı bir isimle Boolean bir değişkene taşıyın ve ardından If ifadesinde bu değişkeni test edin.

Bir sayıya uygulandığında, Not operatörü mantıksal bir ters çevirme yerine bit düzeyinde bir ters çevirme gerçekleştirir. Yalnızca bir karşılaştırmaya veya Boolean bir değişkene uygulayın, örneğin Not (Qty > 0), böylece sonuç Doğru veya Yanlış olur.

Mantık aynı, ancak sözdizimi farklı. Çalışma sayfası formülü bunları fonksiyon olarak adlandırır, AND(A1>0, B1>0). VBA ise bunları koşullar arasına yerleştirir, örneğin If A1 > 0 And B1 > 0 Then.

Evet. Koşulu yapıştırın ve bir yapay zeka asistanı onu daha açık parantezlerle yeniden yazacak veya adlandırılmış Boolean değişkenlerine ayıracaktır. Yeniden yazımı bir doğruluk tablosuna göre doğrulayın, çünkü yanlış bir basitleştirme davranışı sessizce değiştirir.

Evet. İfadeyi girin ve bir yapay zeka asistanı, her girdi kombinasyonunu sonucuyla birlikte listeler; bu da asla ulaşılamayacak bir dalı veya yanlış yerleştirilmiş bir parantezi hızla ortaya çıkarır.

Bu yazıyı şu şekilde özetleyin: