Soru Makro ile belirtilen sütundaki hücre boş olduğunda makroyu durdurma.

Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Değerli üstadlar. Bir konuda destek istiyorum. Yardımcı olursanız çok mutlu olacağım.
Ben excel dosyalarımda formülleri son kullanıcının bozmaması, dosyanın daha stabil çalışması sürekli hesaplama yapmaması, makro ile tetiklenip rapor olarak oluşması gibi çeşitli sebeplerle formülleri makroya yazdığım oluyor. Yine bu tarz bir ihtiyacım söz konusu oldu ancak içinden çıkamadım.

Normalde aşağıda verdiğim kodlar ile son satırı tespit edip formülü oraya kadar kopyalayıp sonra değerlere çeviriyordum ancak bu sefer son dolu satır olmadığı için tıkandım.
Kod:
Sonsatir = Cells(Rows.Count, "B").End(xlUp).Row  '''' Son satırı buluyorum.
Range("A2:M" & Sonsatir).Value = Range("A2:M2").Formula  ''''' Formülü son dolu satıra kadar kopyalıyorum.
Range("A2:M" & Sonsatir).Value = Range("A2:M" & Sonsatir).Value  ''' Formülü değerlere çeviriyorum. Değer olarak görünsün istiyorum.
Örnek dosya ekledim. Ben formülü ilk satırdan aşağı doğru makro ile kopyalayacağım ancak bana G sütununda son hücredeki formül sonucu boş çıktığında kopyalama işlemi orada bitmesini daha fazla kopyalamama yapmamasını istiyorum. Makro son dolu satırı değil kendini kontrol ederek bitecek. Bilgisi olan veya başka hızlı bir yöntemle yapabileceğim bir tavsiyeniz olursa çok sevinirim.
 

Ekli dosyalar

Greenblacksea53

Altın Üye
Katılım
5 Ocak 2019
Mesajlar
570
Excel Vers. ve Dili
Ofis 365 Tr
Altın Üyelik Bitiş Tarihi
05-01-2025
C++:
Dim SonSatir As Long
SonSatir = Cells(Rows.Count, "B").End(xlUp).Row

For i = 2 To SonSatir
    If Range("G" & i).Value = "" Then
        Exit For
    End If
    Range("A" & i & ":M" & i).Formula = Range("A2:M2").Formula
    Range("A" & i & ":M" & i).Value = Range("A" & i & ":M" & i).Value
Next i
End Sub
Denermisin ?
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
@Greenblacksea53 Üstad bunda tüm satırlar A2:M2 formülünün tıpatıp aynısı oldu. filldown gibi bir şey yapmak istiyorum. Örneğin 20. satır bile yine A2:M2 ye bakıyor. Birde döngü ile tek tek baktırmadan kurtulmanın başka bir yolu yok mu. Döngü içine sokunca çok kasıyor. Durması gereken yeri başka nasıl tespit edebilirim. Dinamik bir alan olduğu için satır sonu belli olmuyor. Örnek dosyadaki formüller aslında konuyu daha net anlatıyor.
 

Greenblacksea53

Altın Üye
Katılım
5 Ocak 2019
Mesajlar
570
Excel Vers. ve Dili
Ofis 365 Tr
Altın Üyelik Bitiş Tarihi
05-01-2025
C++:
Dim SonSatir As Long
SonSatir = Cells(Rows.Count, "B").End(xlUp).Row

For i = 2 To SonSatir
    If Range("G" & i).Value = "" Then
        Exit For
    End If
    Range("A" & i & ":M" & i).Formula = Range("A" & i & ":M" & i).Formula
    Range("A" & i & ":M" & i).Value = Range("A" & i & ":M" & i).Value
Next i
 Denermisin dosyanı indirmedim deneyemiyorum?
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
C++:
Dim SonSatir As Long
SonSatir = Cells(Rows.Count, "B").End(xlUp).Row

For i = 2 To SonSatir
    If Range("G" & i).Value = "" Then
        Exit For
    End If
    Range("A" & i & ":M" & i).Formula = Range("A" & i & ":M" & i).Formula
    Range("A" & i & ":M" & i).Value = Range("A" & i & ":M" & i).Value
Next i
Denermisin dosyanı indirmedim deneyemiyorum?
Şimdi denedim üstad ama işlemini görmedi. Üstad ben kısaca şöyle izah etmem gerekirse; sayfamızda Sadece A1:M1 yani 1. satırda başlıklarım var. Altındaki tüm satırlar bom boş. Ben başlığın hemen altından A2:M2 arasına formüllerimi yazdırıyorum. Dolayısıyla 2 nolu satır A2:M2 artık formüllü oluyor. Sayfanın diğer tüm satırları halen bomboş. 2 nolu satırda G2 Hücresinin formülüne EĞERYOKSA boş olmasını söyledim. Senin yazdığın kod A2:M2'yi aşağı doğru A3:M3'e çoğaltırken bakacak G3'e gelen formül doğal olarak EĞERYOKSA boş çıkacak. Makroda G3 hücresi boş diye hiç 4. satıra A4:M4'e formül atmaya devam etmeyecek işlem duracak. G hücresi boş olmadıkça formül kendini aşağıya satırlara doğru kopyalacak. Exceli yormadan kasmadan nasıl yapabilirsek en iyi verimle çok iyi olacak.
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Bu konuda yardımcı olabilecek bir üstad var mı?
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Konu güncel. Yardımcı olabilecek kimse yok mu arkadaşlar
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Bu konuya gerçekten çok ihtiyacım var. Yardımcı olabilecek bir üstad yok mu?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Nacizane tavsiyem..

Talebinizde hem tek tek kontrol etsin, hem hızlı tepki versin, hem formül kullanmak istiyorum diyorsunuz. Bunların hepsi aynı anda excelde pek mümkün değildir. Zaten mantıklı da değildir. Formüllerin tek avantajı dinamik sonuç vermeleridir. Makrolar gibi tetiklenmeye ihtiyaç duymazlar. Fakat veri yükü çok olan dosyalarda formüller performans kaybına yol açmaktadır. Bu sebeple makroya geçmeniz mantıklı olmuş.

Eğer dosyanızda makro kullanmaya karar verdiyseniz artık formüllerle uğraşmanıza gerek yoktur. Formüllerin yaptığı işlemi tamamen makrolarla yapabilirsiniz.
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Nacizane tavsiyem..

Talebinizde hem tek tek kontrol etsin, hem hızlı tepki versin, hem formül kullanmak istiyorum diyorsunuz. Bunların hepsi aynı anda excelde pek mümkün değildir. Zaten mantıklı da değildir. Formüllerin tek avantajı dinamik sonuç vermeleridir. Makrolar gibi tetiklenmeye ihtiyaç duymazlar. Fakat veri yükü çok olan dosyalarda formüller performans kaybına yol açmaktadır. Bu sebeple makroya geçmeniz mantıklı olmuş.

Eğer dosyanızda makro kullanmaya karar verdiyseniz artık formüllerle uğraşmanıza gerek yoktur. Formüllerin yaptığı işlemi tamamen makrolarla yapabilirsiniz.
@Korhan Ayhan üstad örnek dosyaya baktınız mı bilemedim ama bakmadıysanız eğer inceleme imkanı bulursanız ben oradaki tüm formülleri makro ile yazıp değere çeviriyorum. Bunu yaptığım o kısa kodu 1nolu mesaja yazmıştım. Ancak makroda formülün bir yerde durmasına ihtiyacım var. Hayalini kurduğum kodun aynı anda olmayacak durumlarda şayet olmayacağı söylendiğinde benim için sıkıntı yok ancak benim dar bilgim sebebiyle olup olmayacağını kestiremedim. Buna paralel olarakta formül tek tek kontrol etsin ki duracağım yeri anlasın diye diyorum. Formülü tek tek kontrol etmeden makronun işleme son vereceği yeri kafam almadığı için ancak o şekilde tek tek bakarsa nerede duracağını bilir diye yazdım. Excel formüllerini makro ile diğer satırlara çoğalttırmadan komple full vba bir kodlama ile yapılırsa onu beceremiyorum. Böyle durumlarda ilk satıra makro içinden excel formülü yazdırıp gizli bir şekilde makro ile çoğaltıp işimi çözüyorum.

Eğer makro ile formülü çoğaltmayı durduramazsan sayfanın son satırına kadar formül kopyalamaya devam eder. Ben formülü çoğaltırken bulunduğu G sütunundaki hücre boşsa dursun gibi bir şey düşündüm. 5 Nolu gönderide anlatmak istediğim buydu ama kendimi tam ifade edemedim
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tek tek bakmak demek döngü olması demektir.

Böyle tasarımlar kullanıyorsanız makroları öğrenmenizde fayda var. Yoksa bocalar durursunuz.

İlla bu yöntemi kullanacaksanız şöyle bir tavsiyede bulunabilirim. Siz formülleri örnek veriyorum 1000 satıra uygulayın. Bu sizin tablonuzun olabileceği maksimum satır sayısı değeri olsun. Bunu asıl dosyanıza göre revize edebilirsiniz.

Sonra ilk kullandığınız makronuzu buna göre revize edin. Sonrasında DÜŞEYARA formülü kullandığınız için bir yerde hata verecektir. Bu hatalı alanı F5 ile seçtirip bir çırpıda sildirebilirsiniz. Bu işlemin makro kodlarını da makro kaydet ile elde edebilirsiniz. Sonra ilk kullandığınız makro kodunun sonuna bu yeni kod satırlarını eklersiniz.
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Tek tek bakmak demek döngü olması demektir.

Böyle tasarımlar kullanıyorsanız makroları öğrenmenizde fayda var. Yoksa bocalar durursunuz.

İlla bu yöntemi kullanacaksanız şöyle bir tavsiyede bulunabilirim. Siz formülleri örnek veriyorum 1000 satıra uygulayın. Bu sizin tablonuzun olabileceği maksimum satır sayısı değeri olsun. Bunu asıl dosyanıza göre revize edebilirsiniz.

Sonra ilk kullandığınız makronuzu buna göre revize edin. Sonrasında DÜŞEYARA formülü kullandığınız için bir yerde hata verecektir. Bu hatalı alanı F5 ile seçtirip bir çırpıda sildirebilirsiniz. Bu işlemin makro kodlarını da makro kaydet ile elde edebilirsiniz. Sonra ilk kullandığınız makro kodunun sonuna bu yeni kod satırlarını eklersiniz.
Eyvallah üstad Allah razı olsun
 
Üst