• DİKKAT

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

Makronun koşula bağlı olarak çalışması.

Katılım
5 Nisan 2017
Mesajlar
68
Excel Vers. ve Dili
2007 tr
İyi akşamlar arkadaşlar.

Kullandığım makrolardan bir tanesini koşula bağlı çalıştırmak istiyorum.
Bir düzenek kurmam gerekiyor lakin ben yapamadım.

Bu konuda yardımlarınızı bekliyorum. Saygılar.
 

Ekli dosyalar

İyi akşamlar. Görüntüleme yapılmış lakin cevap gelmemiş.
Anlaşılmayan nokta var ise şayet tekrar açıklama yaparım.

Kısaca tekrar değinmem gerekir ise;

Bir makromuz var. Bu makronun içinde de yine başka makrolarımız var.
İsteğim ise aa isimli makronun ardışık veriler geldiği zaman sadece ilk veride
çalışması ardışık (bir öncekinin aynısı) verilerde ise çalışmaması.

Yardımlarınızı bekliyorum. İyi akşamlar.
 
Kod:
Sub Makro1()

sd = Cells(Rows.Count, "B").End(xlUp).Row

For i = 4 To sd

If Cells(4, "B") <> "" Then
'-------------------------------
If Cells(i, "B") <> Cells(i - 1, "B") Then
    Call aa
    Call bb
    Call cc
    Call dd
    Range("B4").Delete Shift:=xlUp
End If

'-------------------------------
End If: Next i

End Sub
 
Tek makroyla aşağıdaki gibi çözebilirsiniz:

Kod:
Sub Makro1()

sd = Cells(Rows.Count, "B").End(xlUp).Row

For i = 4 To sd
    If Cells(4, "B") <> "" Then
        If Cells(i, "B") <> Cells(i - 1, "B") Then
            For j = 4 To 7
                Cells(i, j) = j - 2
            Next
        Else
            For j = 5 To 7
                Cells(i, j) = j - 2
            Next
        End If
    End If
Next
Range("B4:B" & sd) = ""
End Sub
 
Merhabalar,
Sayın askm alakanız için teşekkür ederim.
Kodu örnek dosyada denedim. Lakin düzgün sonuç vermedi.
Kod örnek dosyada sağ tarafta mavi şeritin altındaki gibi
veriler üretmesi lazım.
 
Yusuf Bey iyi akşamlar.

Makrolar sırf makro adı geçsin diye konuldu.
İsteğim aa makrosunu koşula bağlı olarak çalıştırmak.
 
Asıl kodunuzda her satırda işlem bitince B sütunundaki değer silindiği için önceki değerle kontrol yapılamıyor. Bu nedenle sayın askm'nin makrosu doğru sonuç vermiyor maalesef. Bunun için ben makroda önce tüm işlemi bitirip sonra B sütununu boşaltma yöntemini kullandım. gerçek dosyanızdaki durumu bilmediğimden tam çözüm veremem ancak sayın askm'nin kodlarıyla sizin ve benim kodlarımı birleştirerek:

Kod:
Sub Makro1()
sd = Cells(Rows.Count, "B").End(xlUp).Row

For i = 4 To sd

If Cells(4, "B") <> "" Then
'-------------------------------
If Cells(i, "B") <> Cells(i - 1, "B") Then
    Call aa
    Call bb
    Call cc
    Call dd
Else
    Call bb
    Call cc
    Call dd
End If

'-------------------------------
End If: Next i
Range("B4:B" & sd) = ""

End Sub


Sub aa()

Range("E999").End(xlUp).Offset(1, -1).Select
ActiveCell = "2"

End Sub


Sub bb()

Range("E999").End(xlUp).Offset(1, 0).Select
ActiveCell = "3"

End Sub

Sub cc()

Range("F999").End(xlUp).Offset(1, 0).Select
ActiveCell = "4"

End Sub

Sub dd()

Range("G999").End(xlUp).Offset(1, 0).Select
ActiveCell = "5"

End Sub

Kodlarını oluşturdum. İstediğiniz sonucu veriyor.
 
Son düzenleme:
Teşekkür ederim Yusuf Bey.
Lakin makrolardan sonra B4 hücresinin mutlaka silinmesi lazım.
Çünkü diğer makrolar B4 teki veriye göre çalışıyor.

Dediğiniz gibi veri silindiği için çözüm zorlaşıyor.
Esas nokta B4 hücresi. Makrolar çalıştıktan sonra
en son B4 hücresini silmeden burada ki veriyi
başka bir yere kopya etsek. Yani ek bir hücre kullansak
bu durumda çözüm farklı olur mu acaba ?
 
Çözemedim maalesef. Belki gerçek kodlarınızı paylaşırsanız ona göre işlem yapabiliriz.
 
Call kodlarının içeriğinin çözüme bir katkısı yok maalesef.

Her halukarda. Call makroları çalıştıktan sonra, i döngüsünden önce
B4 hücresinin silinmesi gerekiyor.

Çözümün yardımcı hücre kullanılarak yapılması lazım sanırım.
Farklı fikirler gelir sanırım. Bekleyelim bakalım hayırlısı.
 
Diğer makroların B4 ile olan ilişkisini bilirsek kodu ona göre revize edebilirdik. Çözüme böyle bir katkısı olurdu. Neyse, inşallah çözüm bulursunuz.
 
Sayın Yusuf ve Sayın Askm
konuya göstermiş olduğunuz alaka için bir kez daha teşekkür ederim.

Konuyu şu şekilde çözdüm.
Mevcut makrolarımızı kullanmaya başlamadan önce.
B kolonundaki verileri C kolonunda;
Mükerrer olanların 1 tanesini bırak diğerlereni işaretle dedim.

Sonrasında da aa makrosuna C kolonunda veri yok ise çalış var ise
aa makrosunu atla komutu verdim.

Bu şekilde konu çözüme kavuştu.

Herkese iyi çalışmalar diliyorum.
 
Geri
Üst