Vba'da if ifadesi else ile nasıl kullanılır?

İleri düzey bir VBA kullanıcısı olmak istiyorsanız IF ifadesi şarttır. Ve IF kelimesini zaten bildiğinize ve bunu bir elektronik tablo işlevi olarak sıklıkla kullandığınıza inanıyorum.

VBA’da IF aynı şekilde çalışır. Temel fikri, bir koşul DOĞRU olduğunda bir görevi gerçekleştirmek, aksi halde hiçbir şey yapmamak veya başka bir şey yapmaktır. Karmaşık koşullarda olduğu kadar basit de yazabilirsiniz.

Anlaşılması açısından üç farklı bölüme ayırdım.

  • Test edilmesi sağlandı.
  • Koşul DOĞRU ise gerçekleştirilecek görev.
  • Koşul YANLIŞ ise gerçekleştirilecek görev.

Gerçek hayatta böyle görünüyor:

Excel'de VBA IF deyimi kodunu kullanma

Yukarıdaki örnekte yağmur bir durumdur. Eğer bu koşul DOĞRU ise çocuk şemsiyesini açacak, eğer koşul YANLIŞ ise şapkasını takacaktır. Koşullar günlük yaşamımızın her yerinde mevcuttur. Ama şimdi kodlama dünyamıza geri dönelim ve onu keşfedelim.

Sözdizimi: VBA IF

VBA’da üç farklı türde IF ifadesi vardır.

1. EĞER-O halde

IF THEN, IF ifadesinin en basit şeklidir. Tek yapmamız gereken kontrol edilecek bir koşul belirtmek ve bu koşul DOĞRU ise bir görevi gerçekleştirecektir. Ancak bu koşul YANLIŞ ise hiçbir şey yapmaz ve anında çizgiyi atlar.

Sözdizimi

 IF condition Then statement[s]

Yukarıdaki sözdiziminde, değerlendirilecek bir koşulu ve bu koşulun DOĞRU olması durumunda gerçekleştirilecek bir görevi belirtmemiz gerekir.

Örnek

vba if ifadesi if ardından makro kodunu kullanarak

Yukarıdaki örnekte A1 hücresinin 10 değerini içerip içermediğini kontrol ettik ve eğer içeriyorsa ifadede “Hücre A1’in değeri 10” mesajını içeren bir mesaj kutusu görüntülenecektir.

 Sub CheckValue() If Range("A1").Value = 10 Then MsgBox ("Cell A1 has value 10") End Sub

2. IF-sonra-else

Bir koşul DOĞRU ise belirli bir görevi, YANLIŞ ise farklı bir görevi gerçekleştirmek istediğinizde IF-Then-Else ifadesini kullanabilirsiniz.

Sözdizimi

 IF Condition Then Statement[s] Else Statement[s] End If

Yukarıdaki söz dizimi ile bir koşulun sonucuna bağlı olarak farklı görevleri gerçekleştirebiliriz. Eğer koşul DOĞRU ise “The Then” den sonra belirttiğiniz ifadeyi, eğer koşul YANLIŞ ise “Else” den sonra belirttiğiniz ifadeyi çalıştıracaktır.

Örnek

 Sub CheckValue() If Range("A1").Value = "10" Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End Sub
vba if ifadesi if Then else makro kodunu kullanarak

Yukarıdaki örnekte A1 hücresindeki değeri kontrol etmek için IF-Then-Else ifadesini kullandım.

A1 hücresi 10 değerine sahipse, “A1 hücresinin değeri 10’dur” mesaj kutusu, A1 hücresinde başka bir değer varsa “A1 hücresinin değeri 10’dan farklı” mesaj kutusu görüntülenir. 10”. Yani burada durum sonucuna göre farklı görevleri gerçekleştirebiliyoruz.

3. IF-Sonra-Elseif-Else

Bu, gelişmiş durum ifadeleri yazmanıza yardımcı olacak en kullanışlı ve önemli IF türüdür. Bu tipte ilk koşulu değerlendirdikten sonra ikinci koşulu belirleyebilirsiniz.

Sözdizimi

 IF Condition Then Statement[s] Elseif Condition Then Statement[s] Else Statement[s] End If

Yukarıdaki sözdiziminde elimizde:

  1. Değerlendirmek şartıyla.
  2. Bu koşulun TURE olması durumunda yürütülecek talimat.
  3. Bu koşul YANLIŞ ise değerlendirmemiz gereken ikinci koşul vardır.
  4. Ve eğer ikinci koşul DOĞRU ise, bir beyanda bulunmamız gerekiyor.
  5. Ancak birinci ve ikinci koşulların her ikisi de YANLIŞ ise “Else”den sonra bahsettiğiniz ifadeyi verecektir.

Ve en iyi yanı, kodunuzda istediğiniz sayıda “Elseif” kullanabilmenizdir. Bu, beyanınızda istediğiniz sayıda koşulu belirtebileceğiniz anlamına gelir.

Örnek

vba if ifadesi if ardından elseif elseif makro kodunu kullanarak
 Sub check_grade() If Range("A2").Value = "A" Then MsgBox "Very Good" Else If Range("A2").Value = "B" Then MsgBox "Good" ElseIf Range("A2").Value = "C" Then MsgBox "Average" ElseIf Range("A2").Value = "D" Then MsgBox "Poor" ElseIf Range("A2").Value = "E" Then MsgBox "Very Poor" Else MsgBox "Enter Correct Grade" End Sub

Yukarıdaki örnekte öncelikle A2 hücresinde “A” değeri olup olmadığını kontrol edecek ve eğer hücre “A” derecesine sahipse ifade “Çok İyi” mesajını döndürecek bir makro yazdık.

Bu komut ilk önce A2 hücresini “A” değeri açısından kontrol edecek ve hücrenin derecelendirmesi “A” ise talimat “Çok İyi” mesajını döndürecektir.

Ve eğer ilk koşul YANLIŞ ise, ikinci koşulu değerlendirecek ve hücrenin derecesi “B” ise “İyi” mesajını döndürecektir.

Ve eğer ikinci koşul yanlışsa üçüncü koşula geçilecektir ve bu şekilde devam edecektir. Sonuçta beş koşulun tümü yanlışsa geri kalanlardan sonra yazdığım kodu çalıştıracaktır.

VBA’da IF İfadesi Yazmanın Sırrı

Artık tüm IS türlerini biliyorsunuz ve gerçekleştirmeniz gereken göreve bağlı olarak birini de seçebilirsiniz. Sana bir sır vereyim.

Tek Satırlı IF İfadesi ve Blok IF İfadesi

Bir IF ifadesini iki farklı şekilde yazabilirsiniz ve her ikisinin de avantajları ve dezavantajları vardır. Bakmak.

1. Tek satırlık açıklama

IF-Then ifadesini kullanırsanız, tek satırlık ifade mükemmeldir. Line ifadesini kullanmanın temeli, tüm kodunuzu tek bir satıra yazmaktır.

 If A1 = 10 Then Msgbox("Cell A1 has value 10")

Yukarıdaki açıklamada A1 hücresinin 10 değerine sahip olup olmadığını değerlendirmek için bir IF ifadesi yazdık, ardından bir mesaj kutusu görüntüleyecektir. Tek satırlık bir ifade kullanmanın en iyi yolu, basit kod yazmanız gerektiği zamandır. Karmaşık ve uzun bildirimler için tek satırlık kod kullanmanın anlaşılması zordur.

Kısa ipucu: Tek satırlık kod yazarken, ifadeyi tamamlamak için Endif’i kullanmanıza gerek yoktur.

2. Blok bildirimi

Kodunuzu düzgün ve anlaşılır bir şekilde yazmak istediğinizde Block ifadesi mükemmeldir. Bir blok ifadesi yazdığınızda, makronuzda birden fazla satır kullanabilirsiniz, bu da size düzenli ve temiz kod sağlar.

 Sub check_value() If Range(“A1”).Value = “10” Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End If End Sub

Yukarıdaki örnekte IF-Then-Else ifadesini bloklar halinde yazdık. Ve okumanın kolay olduğunu ve hatta hata ayıklamanın kolay olduğunu görebilirsiniz.

Karmaşık talimatlar yazarken (ki bu kılavuzu okuduktan sonra kesinlikle yazacaksınız), blok talimatları her zaman iyidir. Ayrıca, iç içe If ifadeleri yazarken, netlik sağlamak için satırınıza girinti de ekleyebilirsiniz.

Hızlı İpucu – IF-Then-Elseif-Else kullandığınızda kodunuzun sonunda Else komutunu kullanarak göz ardı edebileceğiniz bir istisnanız vardır. İfadenizde koşulların hiçbiri DOĞRU olmadığında herhangi bir görevi gerçekleştirmeniz gerekmediğinde bu çok kullanışlıdır.

8 somut örnek

Burada takip edebileceğiniz bazı basit ama kullanışlı örnekleri listeledim.

1. İç içe EĞER

IF ifadesinin en iyi kısmı iç içe geçmiş ifadeler oluşturmanızdır. İlk koşula ikinci bir koşul ekleyebilirsiniz.

vba if ifadesiyle iç içe if yazma
 Sub NestIF() Dim res As Long res = MsgBox("Do you want to save this file?", vbYesNo, "Save File") If res = vbYes Then 'start of first IF statement If ActiveWorkbook.Saved <> True Then 'start of second IF statement. ActiveWorkbook.SaveMsgBox ("Workbook Saved") Else MsgBox "This workbook is already saved" End If 'end of second IF statement Else MsgBox "Make Sure to save it later" End If ' end of first IF statement End Sub

Yukarıdaki örnekte iç içe IF ifadesini kullandık. Bu makroyu çalıştırdığınızda karşınıza Tamam ve İptal seçeneklerinin bulunduğu bir mesaj kutusu gelecektir . Koşullu ifadenin çalışması bundan sonra başlar.

Öncelikle tıkladığınız butonu değerlendirecektir. “Evet”i tıkladıysanız e-tablonuzun kaydedilip kaydedilmediğini değerlendirmek için bunu iç içe geçirin.

Çalışma kitabınız kaydedilmemişse kaydedecek ve size bir mesaj gönderilecektir. Ayrıca çalışma kitabı zaten kayıtlıysa bununla ilgili bir mesaj görüntüler.

Ancak butona tıklarsanız ilk makronun koşulu YANLIŞ olacak ve yalnızca kitabınızı daha sonra kaydetmeniz için bir mesaj alacaksınız.

Bu koddaki temel fikir, ikinci koşulun tamamen birinci koşula bağlı olmasıdır, eğer ilk koşul YANLIŞ ise ikinci koşul değerlendirilmeyecektir.

Yuvalanmış IF hakkında daha fazla bilgi edinin

2. IF ve GoTo ile bir döngü oluşturun

Ayrıca IF ile goto’yu kullanarak bir döngü oluşturabilirsiniz. Çoğu programcı döngüleri bu şekilde yazmaktan kaçınır çünkü döngü oluşturmanın daha iyi yolları vardır. Ancak bunu nasıl yapabileceğimizi öğrenmenin hiçbir zararı yok.

 Sub auto_open() Alert: If InputBox("Enter Username") <> "Puneet" Then GoTo Alert Else MsgBox "Welcome" End If End Sub

Yukarıdaki örnekte döngü oluşturmak için bir koşul ifadesi kullandık. Makro adı olarak auto_open’ı kullandık, böylece birisi dosyayı her açtığında bu makroyu çalıştıracaktır.

Kullanıcının bir kullanıcı adı girmesi gerekir ve eğer bu kullanıcı adı “Puneet”e eşit değilse kodu tekrarlayacak ve giriş kutusunu yeniden gösterecektir. Ve doğru metni girerseniz dosyaya erişebilecektir.

3. Bir hücrenin sayı içerip içermediğini kontrol edin

Burada aktif hücrenin sayısal bir değer içerip içermediğini kontrol etmek için bir koşul kullandık.

hücredeki sayıyı kontrol etmek için vba if ifadesini kullanın
 Sub check_number() If IsNumeric(Range("B2").Value) Then MsgBox "Yes, active cell has a number." Else MsgBox "No, active cell hasn't a number." End If End Sub

Yukarıdaki örnekte VBA’da bir hücrenin değerinin sayı olup olmadığını kontrol etmek için çalışma sayfasındaki sayı işleviyle aynı olan isnumeric işlevini kullanarak bir koşul yazdım.

Değer bir sayı ise TRUE değerini döndürecek ve “Evet, aktif hücrenin sayısal değeri var” mesajı alacaksınız. Değer bir sayı değilse, “Aktif hücrede sayısal değer yok” mesajı alırsınız.

4. VEYA ve VE’yi IF ile birlikte kullanın

IF OR’u kullanarak iki veya daha fazla koşulu belirtebilir ve koşullar arasında en az bir koşulun DOĞRU olması durumunda bir görevi gerçekleştirebilirsiniz.

 Sub UsingOR() If Range("A1") < 70 Or Range("B1") < 70 Then MsgBox "You Are Pass" Else If Range("A1") < 40 And Range("B1") < 40 Then MsgBox "You Are Pass" Else MsgBox "You Are Fail" End If End If End Sub

Yukarıdaki örnekte 2. satırda VEYA kullanan iki koşulumuz var. Öğrencinin herhangi bir dersten 70 puan alması halinde sonuç “Geçti” olacaktır. Ve 7. satırda AND operatörünü kullanan iki koşulumuz var. Öğrencinin her iki dersten de 40’ın üzerinde puan alması halinde sonuç “Geçti” olacaktır.

IF AND seçeneğini kullanarak birden fazla koşulu belirtebilir ve tüm koşullar DOĞRU ise bir görevi gerçekleştirebilirsiniz.

5. IF ile Değil’i kullanın

Bir koşulda NOT’u kullanarak, DOĞRU’yu YANLIŞ’a ve YANLIŞ’ı DOĞRU’ya değiştirebilirsiniz.

HAYIR İSE VBA

 Sub IF_Not() If Range(“D1”) <= 40 And Not Range(“E1”) = “E” Then MsgBox "You Are Pass." Else MsgBox "You Are Fail." End If End Sub

Yukarıdaki örnekte, koşulda NOT’u kullandık. Deneğin puanının bulunduğu iki hücremiz var. Bir hücrede puan sayılarla, diğer hücrede ise notlarla gösterilir.

  • Bir öğrencinin birinci dersten 40’ın üzerinde, ikinci dersten E notunun üzerinde olması durumunda PASS’tır.
  • Bir öğrencinin notu birinci derste 40’ın üzerinde, ikinci derste E notunun üzerinde ise PASS’tır.

Yani bir öğrencinin notu 40’ın üzerinde ve E dışında bir not aldığında “Geçtiniz” veya “Kaldınız” mesajı alacağız.

6. Onay kutulu IF beyanı

Şimdi burada bir makroyu çalıştırmak için bir onay kutusu kullanıyoruz.

vba if ifadesini onay kutusuyla kullanma
 Sub ship_as_bill() If Range("D15") = True Then Range("D17:D21") = Range("C17:C21") Else If Range(“D15”) = False Then Range("D17:D21").ClearContents Else MsgBox (“Error!”) End If End If End Sub

Yukarıdaki örnekte, onay kutusu işaretlendiğinde D17:D21 aralığının C17:C21 aralığına eşit olmasını sağlayacak bir koşul oluşturmak için bir IF ifadesi kullandık. Ve eğer kutu işaretlenmezse D17:D21 aralığı boş olacaktır.

Bu tekniği kullanarak fatura adresini teslimat adresi olarak kullanabiliriz ve başka bir şeye ihtiyacımız olursa adresi manuel olarak girebiliriz.

7. Bir hücrenin birleştirilip birleştirilmediğini kontrol edin

Burada da aktif bir hücrenin birleştirilmesi durumunda uyarı alma koşulunu yazıyoruz.

vba if ifadesi kullanılarak bir hücrenin birleştirilip birleştirilmediğini kontrol edin
 Sub MergeCellCheck() If ActiveCell.MergeCells Then MsgBox "Active Cell Is Merged" Else MsgBox "Active Cell Is Not Merged" End If End Sub

Yukarıdaki kodda aktif hücrenin birleşip birleştirilmediğini kontrol etmek için birleştirilmiş hücreleri kullandık. Etkin hücre birleştirilirse koşul bunun için bir uyarı döndürür.

8. Hücre boşsa satırın tamamını silin

Burada bir satırın boş olup olmadığını kontrol etmek için IF kullanıyoruz. Ve eğer bu satır boşsa, ifade o satırı siler.

 Sub DeleteRow() If Application.CountA(ActiveCell.EntireRow) = 0 Then ActiveCell.EntireRow.Delete Else MsgBox Application.CountA(ActiveCell.EntireRow) & "Cell(s) have values in this row" End If End Sub

Yukarıdaki örnekte öncelikle değeri olan hücreleri kontrol edecektir. Değer içeren hücre sayısı sıfırsa koşul etkin satırı siler, aksi takdirde değer içeren hücre sayısını belirten uyarıyı döndürür.

Çözüm

Dediğim gibi bu VBA’nın en önemli kısımlarından biri ve VBA’da uzmanlaşmak istiyorsanız mutlaka öğrenmelisiniz. IF deyimi ile basit kodların yanı sıra karmaşık kodlar da yazabilirsiniz. Ayrıca mantıksal operatörleri kullanabilir ve iç içe geçmiş koşullar yazabilirsiniz.

Umarım bu kılavuz daha iyi kodlar yazmanıza yardımcı olur.

Şimdi bana şunu söyle. Sık sık VBA’da koşullar yazıyor musunuz? Ne tür kodlar yazıyorsunuz? Lütfen görüşlerinizi yorum kısmında benimle paylaşın. Ve bu kılavuzu arkadaşlarınızla paylaşmayı unutmayın.

Yorum ekle

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir