Çözüldü Hücre Değerine Göre Döngü Çalıştırmak

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
710
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Merhaba arkadaşlar;

Ekli dosyamda L2 hücresinde KİR yazıyor ve bunun için KİRA makrosunu çalıştırıyorum.
L3 hücresinde ELK yazıyor ve bunun içinde ELEKTRİK makrosunu çalıştırıyorum.
Bu listem böyle uzayıp gidiyor ve her bir satıra geldiğimde hücre değerine göre makro çalıştırıyorum.

Bu işlemi bir döngüye tabi tutarak her satırda makro çalıştırmak yerine tek bir makro ile nasıl yapabilirim.
Bunun çözümünü arıyorum.

Ekli dosyamda üç adet örnek fatura satırı var.
C sütunundaki fatura numarası değişince L sütunundaki hücre değerine göre makro çalışıyor.
Fakat sadece ilk satırdaki fatura için çalışıyor, devamı gelmiyor.
Ekli dosyamda kullandığım kod adı ÇALIŞTIR
Kodun içeriği alttadır, yardım edebilir misiniz ?

Sub Calıştır()

Dim i As Long
Dim lastRow As Long

' Son satırı bul
lastRow = Cells(Rows.Count, 3).End(xlUp).Row

' Her bir satırı kontrol et
For i = 2 To lastRow
' Fatura numarası değişmişse
If Cells(i, 3).Value <> Cells(i - 1, 3).Value And Cells(i, 3).Value <> "" Then
' L sütunundaki hücreyi seç
Cells(i, 12).Select

If (ActiveCell.Offset(0, 0) = "KİR") Then
Call Kira

ElseIf (ActiveCell.Offset(0, 0) = "ELK") Then
Call Elektrik


Else
ActiveCell.Offset(0, 0).Select
ActiveCell.FormulaR1C1 = "Tanımlama"


End If

'Döngü kod bloğu sonu
End If
Next

End Sub
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,153
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Bu kodu düzenlemek yerine tam olarak ne yapmak istediğinizi açıklarsanız daha farklı ve kısa bir yöntem belki bulunabilir.
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
710
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Muzaffer Ali;

Elektrik ve kira adlı iki adet makrom var.
L2 hücresinde ELK varsa, elektrik makrosu, KİR varsa kira makrosu çalışacak.
Bu şekilde 100 satırlık bir fatura listesi düşünün.
100 adet satır için tek bir makro yapmak istiyorum.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,153
Excel Vers. ve Dili
2019 Türkçe
Elektrik makrosu, kira makrosu ve dosyanızdaki diğer hiçbir makronun var olmadığını varsayarak yapmak istediğiniz şeyi en başından itibaren sorun demek istemiştim.
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
710
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Güzel diyorsunuz ama elektrik makrosu diyelim içinde iki tane eğer komutu barındırıyor. Bir dünya detay var, hangi birini anlatayım.
Fakat elektrik ve kira için hazır kod var.

Şöyle ilerleyelim:
Kendinizi benim yerime koyun.
Ekli dosyamızı açın. L2 hücresinde elektrik makrosunu çalıştırın. L3 hücresinde kira makrosunu çalıştırın.
Düşünün ki dosyam 100 satır her bir satırda makro çalıştırmanız gerekiyor.

Şimdi bu işi nasıl hızlandırabileceğinizi düşünün. Tek bir makro ile 100 satırlık işlem yapacak.
İhtiyacınız olan bir eğer kodu çünkü L2 hücresinde yazılı olan metne göre makro çalıştıracak.
Bu işi bütün satırlar için yapacak dolayısı ile biri bitince ardından diğer satıra geçecek bir döngü gerekli.

Bu şekilde yol alsak olmaz mı :)
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,318
Excel Vers. ve Dili
2007 Türkçe
Kendinizi benim yerime koyun.
Merhaba,
Bütün işlemleri select kodu ile seçtirerek yapmışsınız bu da dosyanızın çalışma performansını etkileyecektir. Ben olsam bu kodlarla çalışmazdım. Bu yüzden emin olunuz ki; Sayın Muzaffer Ali'nin kendini sizin yerinize koyduğu için sıfırdan çalışmayı teklif ettiğini düşünüyorum.
Bu şekilde yol alsak olmaz mı
İlla da bu şekilde yol alacağım derseniz zannedersem döngüyü For i = lastRow To 2 Step -1 şeklinde tersten başlattığınızda her satırda makrolarınız çalışacaktır.
İyi çalışmalar...
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
710
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Ömer Bey;

Performans konusu hiç gündemimde yoktu, bu konuda haklısınız.
Kodunuzu denedim çalıştı, dert tasa bitti. Elinize sağlık. :)
100 satırlık deneme verisi girdim ve makroyu çalıştırdım. 10 saniye sonra bitti. Bu performans benim için yeterli.
Muzaffer Ali Bey'e de çok teşekkür ederim. Çok ilgilendi...
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,153
Excel Vers. ve Dili
2019 Türkçe
Güzel diyorsunuz ama elektrik makrosu diyelim içinde iki tane eğer komutu barındırıyor. Bir dünya detay var, hangi birini anlatayım.
Fakat elektrik ve kira için hazır kod var.

Şöyle ilerleyelim:
Kendinizi benim yerime koyun.
Ekli dosyamızı açın. L2 hücresinde elektrik makrosunu çalıştırın. L3 hücresinde kira makrosunu çalıştırın.
Düşünün ki dosyam 100 satır her bir satırda makro çalıştırmanız gerekiyor.

Şimdi bu işi nasıl hızlandırabileceğinizi düşünün. Tek bir makro ile 100 satırlık işlem yapacak.
İhtiyacınız olan bir eğer kodu çünkü L2 hücresinde yazılı olan metne göre makro çalıştıracak.
Bu işi bütün satırlar için yapacak dolayısı ile biri bitince ardından diğer satıra geçecek bir döngü gerekli.

Bu şekilde yol alsak olmaz mı :)
Yazdığınız o kodların tamamını 2-3 satır kod ile yapmak mümkünmüş gibi görünüyor onun için söylemiştim. Kolay gelsin.
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
710
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
İnanın imkanı yok.
İsterseniz akşam eve varınca elektrik makrosu için yaptığım işleri detaylı yazayım.
Sizde yazılanlara bakarak kaç satırda yazılır karar verirsiniz.
Benim kaybedecek bir şeyim yok :)
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,153
Excel Vers. ve Dili
2019 Türkçe
Bu sorunuz çözüldüğünde benim herhangi bir menfaatim olmadığını biliyorsunuz değil mi? Sizin sorunuz çözülsün diye uğraştım.

Sorunuz bu hali ile çözüldüğüne göre herhangi bir detay yazmanıza gerek yok size zahmet olmasın.
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
710
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Bu sorunuz çözüldüğünde benim herhangi bir menfaatim olmadığını biliyorsunuz değil mi? Sizin sorunuz çözülsün diye uğraştım.

Sorunuz bu hali ile çözüldüğüne göre herhangi bir detay yazmanıza gerek yok size zahmet olmasın.
Biliyorum tabi Muzaffer Ali Bey, ne diyeceğimi bilemediğim için öyle yazdım. İlginiz için tekrar teşekkür ederim.
 
Üst