Çok Fazla Koşula Göre İşlem Yap - Microsoft Excel


Eğer if içinde And, Or gibi operatörlerle çok fazla koşul girmek gerekiyorsa buna alternatif olarak ne yapılabilir sorusuna alternatif bir cevap hazırladım.

Kod


Option Explicit

Sub CokFazlaKosulaGoreIslemYap()
    Dim dizi    As Variant
    Dim d       As Variant
    Dim kontrol As Boolean
    
    dizi = Array( _
            1, 2, 3, 4, 5, 6, 7, 8, 10, _
            11, 12, 14, 15, 16, 17, 18, 19, 20, _
            21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
    
    kontrol = False
    
    For Each d In dizi
devamEt:
        If (d = 15) Then
            kontrol = True
            MsgBox "Koşula uyan değer bulundu: 15"
        ElseIf (d = 13) Then
            kontrol = True
            MsgBox "Koşula uyan değer bulundu: 13"
        ElseIf (d = 56) Then
            kontrol = True
            MsgBox "Koşula uyan değer bulundu: 56"
        Else
        On Error GoTo devamEt
        End If
    Next
    
    If (kontrol = False) Then
        MsgBox "Koşula uyan hiçbir değer bulunamadı."
    End If
End Sub

Kod (Açıklamalı)


Option Explicit

Sub CokFazlaKosulaGoreIslemYap()

    '--------------------------------------------------
    'Koşul sonuçlarımızı yazdıracağımız değişken.
    '--------------------------------------------------
    Dim dizi    As Variant
    
    '--------------------------------------------------
    'For Each döngüsünde kullanacağımız dizi
    'elemanını temsil edecek olan değişken.
    '--------------------------------------------------
    Dim d       As Variant
    
    '--------------------------------------------------
    'Koşulun sağlanıp sağlanmadığını kontrol
    'etmek için kullanacağımız değişken.
    'Eğer hiçbir koşul sağlanmamışsa işimize
    'yarayacak.
    '--------------------------------------------------
    Dim kontrol As Boolean
    
    
    '--------------------------------------------------
    'Burada If bloklarında kullanacağımız değerleri
    'yazdık. Ben 30 değerlik bir dizi oluşturdum.
    '--------------------------------------------------
    dizi = Array( _
            1, 2, 3, 4, 5, 6, 7, 8, 10, _
            11, 12, 14, 15, 16, 17, 18, 19, 20, _
            21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

    '--------------------------------------------------
    'Değişkene başlangıç değeri atadık.
    '--------------------------------------------------
    kontrol = False
    
    '--------------------------------------------------
    'Şimdi koşulları For Each yardımıyla
    'tek tek kontrol edeceğiz. Burada Select Case
    'alternatifi eminim bir çoğunuzun aklına geldi
    'ama asıl amaç if içindeki kalabalığı azaltmaktı.
    'Dizi yerine Collection vs. de kullanılabilir.
    '--------------------------------------------------
    For Each d In dizi
devamEt:
        If (d = 15) Then
            kontrol = True
            MsgBox "Koşula uyan değer bulundu: 15"
        ElseIf (d = 13) Then
            kontrol = True
            MsgBox "Koşula uyan değer bulundu: 13"
        ElseIf (d = 56) Then
            kontrol = True
            MsgBox "Koşula uyan değer bulundu: 56"
        Else
        On Error GoTo devamEt
        End If
    Next
    
    '--------------------------------------------------
    'Eğer 30 koşulumuzdan hiçbiri sağlanmadıysa
    'kontrol isimli değişkenimiz false olarak
    'kalacağından dolayı bu kısım çalışacak.
    '--------------------------------------------------
    If (kontrol = False) Then
        MsgBox "Koşula uyan hiçbir değer bulunamadı."
    End If
End Sub

Etiketler
microsoft excel açıklamalı içerik microsoft excel vba