• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

"If-End If" Hakkında

Katılım
6 Mayıs 2014
Mesajlar
264
Excel Vers. ve Dili
office 365
Kod:
Sub YAPIŞTIR_ŞARTLI()
        
If Range("L1") > 0 And Range("L1") >= Range("L2") And Range("M1") >= Range("M3") And Range("N1") >= Range("N3") Then
    Range("L1:P1").Select
    Selection.Copy
    Run ("DEĞERLERİ_YAPIŞTIR")
End If
If Range("L1") > 0 And Range("L1") >= Range("L2") And Range("M1") > Range("M3") And Range("N1") < Range("N3") Then
    Range("L1:P1").Select
    Selection.Copy
    Run ("DEĞERLERİ_YAPIŞTIR")
End If
If Range("L1") > 0 And Range("L1") > Range("L2") And Range("M1") < Range("M3") And Range("N1") < Range("N3") Then
    Range("L1:P1").Select
    Selection.Copy
    Run ("DEĞERLERİ_YAPIŞTIR")
End If
If Range("L1") > 0 And Range("L1") > Range("L2") And Range("M1") < Range("M3") And Range("N1") = Range("N3") Then
    Range("L1:P1").Select
    Selection.Copy
    Run ("DEĞERLERİ_YAPIŞTIR")
End If
If Range("L1") > 0 And Range("L1") > Range("L2") And Range("M1") < Range("M3") And Range("N1") > Range("N3") Then
    Range("L1:P1").Select
    Selection.Copy
    Run ("DEĞERLERİ_YAPIŞTIR")
End If
If Range("L1") > 0 And Range("L1") > Range("L2") And Range("M1") = Range("M3") And Range("N1") < Range("N3") Then
    Range("L1:P1").Select
    Selection.Copy
    Run ("DEĞERLERİ_YAPIŞTIR")
End If   
End Sub

"If-End If" kullanarak yukarıdaki şekilde makroya ekleme yaptım. Makro çalışıyor. Bunun başka bir yazım tekniği var mı bilmiyorum.
Merak ettiğim tek şey, birden fazla koşulu bu şekilde alt alta yazmak makroyu yavaşlatır mı? Başka bir şekilde yazarsam makro hızlanır mı. Öğrenmek için soruyorum.
 
Merhaba.

Yukarıdaki kod 1 saniyenin çok çok altında bir sürede çalışır.
Bu yazdığınız kodlarda sadece şu iki satır birleştirilerek kısaltılabilir.
Kod:
    Range("L1:P1").Select 'Seç
    Selection.Copy'Kopyala

bunun yerine ikisini birden yapan bir satır kod yazılabilir şöyle ki;
Kod:
Range("L1:P1").copy

Yazdıklarınız daha kısa yoldan yazılıp yazılmayacağı bilinebilmesi için daha gerçekçi kod paylaşmalısınız.
 
Merhaba,

Kodun çalışma süresi sizin yazdığınız sorguların gerçekleşme durumuna bağlı olarak değişkenlik gösterir. Fakat @dalgalikur'un belirttiği gibi makronuz zaten hızlı çalışacaktır.

Kodlarınızda ki Run ("DEĞERLERİ_YAPIŞTIR") satırından sonra Exit Sub eklerseniz kod diğer koşullara bakmadan işlemi sonlandırır. Bu da hız bakımından size zaman kazandırır. Aksi durumda makronuz ilk sorgu gerçekleşse dahi diğer koşullarada bakacağı için gereksiz bir zaman kaybı yaşanır.
 
Sayın dalgalıkur, makro kaydet yöntemi ile kaydedip sonra birden fazla makroyu birleştirdiğim için kodlarım uzun oluyor. Daha kısa yöntemleri sizlerden öğrenince arşive alıp onları deniyorum. Teşekkür ederim.
 
Korhan Bey peki "Exit Sub " eklersem ama ilk sorgu gerçekleşmezse kod diğer sorguları kontrol eder mi? Yani bunu eklediğimde gerçekleşmeyen her sorgudan sonra bir sonraki sorguyu kontrol eder mi?
 
Merhaba ,

Exit sub if sorgusunun içinde ise ,o sorgu gerçekleşmediginde makro sonlanmaz ve diğer sorğularınıza gider.

Ayriyetten eğer sorğunuzun biri ğerçekleştiğinde diğerlerinin bir önemi yok ise de Elseif tekniği ile her sorğunun sonuna End if eklemek zorunda kalmazsiniz .
 
Bunları öğrendiğim iyi oldu. Deneyeceğim. Teşekkürler.
 
Geri
Üst