• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Sayfalardaki Veriyi Silme/Temizleme

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

RBozkurt

Yeni Üye
Katılım
25 Ara 2021
Mesajlar
322
Çözümler
36
Aldığı beğeni
204
Excel V
Office 2021 TR
Konu Sahibi
Merhaba
5 adet sayfadan oluşan çalışma kitabım var. Sayfa isimleri (hayali, düzenlerim) ve VBA'da bulunan sayfa numaraları aşağıdadır.
Normalde tek tek silme makrom var. Fakat bazısı tüm satır silme gibi yapıyor kasıyor, bazısı sayfadaki koşullu biçimlendirmeyi de siliyor.
Silme veya temizleme hangisi uygun olur bilmiyorum.

Mesela sayfaya 2000 satır veri eklenince temizliyor fakat satırlar boş kalıyor ve excel dosyası boyutu artıyor.
Silme işlemini yapınca alta belirtmiş olduğum hücrelerin silinmesi yeterli.
Bu şekilde tek bir makroda birleştirme için yardımcı olabilirmisiniz?

Anasayfa (Sayfa1)
A (Sayfa2) > A2'den başlayıp T Sütunu dahil tüm dolu hücreler (A1 satırı silinmeyecek)
B (Sayfa3) > A1'den başlayıp H Sütunu dahil tüm dolu hücreler
C (Sayfa4) > A5'den başlayıp I Sütunu dahil tüm dolu hücreler (A4 satırına kadar silinmeyecek)
D (Sayfa5) > A2'den başlayıp V Sütunu dahil tüm dolu hücreler (A1 satırı silinmeyecek)
 
Çözüm
Şu şekilde düzenleyebilirsiniz:

Sub sayfaTemizle()

'Anasayfa için silmeden bahsedilmemiş. Alttaki kodu ihtiyaca göre düzenleyip kullanabilirsiniz.
'Sayfa1.Range("A2:T" & Sayfa1.UsedRange.Rows.Count).Clear

'Her sayfada
'1- Koş.B temizliyoruz.
'2- Sayfayı temziliyoruz.
'3- Koş.B tekrar ekliyoruz.

'Alt satırlar diğer sayfalar için.
Sayfa2.Range("A2:T" & Sayfa2.UsedRange.Rows.Count).FormatConditions.Delete
Sayfa2.Range("A2:T" & Sayfa2.UsedRange.Rows.Count).Clear
'Buraya makro kaydediciden aldığınız Koş.B kodları gelecek.

Sayfa3.Range("A1:H" & Sayfa3.UsedRange.Rows.Count).FormatConditions.Delete
Sayfa3.Range("A1:H" & Sayfa3.UsedRange.Rows.Count).Clear
'Buraya makro kaydediciden aldığınız Koş.B kodları gelecek.

Sayfa4.Range("A5:T" &...
Konu Sahibi
Alttaki gibi 4 adet makrom var.
.Clear ile .ClearContents farkı nedir bilmiyorum.

HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.


HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.

HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.


HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
Merhaba. Denedim çalıştı,

Sayfada bulunan koşullu biçimlendirmelerin silinmememesi için ne yapmalıyım?

HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Sayın RBozkurt buyurunuz:

HTML:
C:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Kodları makronuzda uygun gördüğünüz yere ekleyebilirsiniz.
Bu arada rows(1).delete 1. satırı siler.
Range("A1").ClearContents a1 hücresinin içeriğini temizler. Sadece veri silinir. Biçimlendirme silinmez. Dolayısı ile Koş.B silinmez.
Range("A1").Clear biçimlendirme dahil her şeyi siler. İyi geceler.
 
Konu Sahibi
Merhaba 2 makroda verileri siliyor, biçimlendirme kalıyor.
Aslında aşağıdaki kod işimi kısmen görüyor şuan fakat;
.Clear olunca çerçeve vs kalıyor satırlar duruyor 1000 satır var diyelim duruyor. sadece içi boş

.ClearContents yapınca da istediğim gibi temizliyor. Satırlarda yok oluyor,
burdada aşağıdaki biçimlendirmeler çalışmıyor.

Adsız.png

HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Sayın RBozkurt yukarıda açıkladığım gibi:

"Bu arada rows(1).delete 1. satırı siler.
Range("A1").ClearContents a1 hücresinin içeriğini temizler. Sadece veri silinir. Biçimlendirme silinmez. Dolayısı ile Koş.B silinmez.
Range("A1").Clear biçimlendirme dahil her şeyi siler."

Siz o alanda daha önce .Clear kullanmışsınızdır. Bu sebeple ilgili alandaki Koş.B silinmiştir.
EĞER Koş.B silinmesini istemiyorsanız .ClearContents kullanmalısınız.
Koşullu biçimlendirmelerinizi tekrar düzenleyin. .ClearContents kullandığınızda silinmediklerini göreceksiniz.

Ayrıca kodlarınızda şu yapıyı kullanıyorsunuz:
Range("A2:T" & Rows.Count).Clear
Bu ifadede kullanılan Rows.Count dosyanızdaki en son SATIR demektir. Yani 1048576 SATIR demek.
Bu şekilde kullanırsanız gereksiz iş yükü oluşturursunuz ki bu durumda PC kasılması çok normaldir.
Diyelim ki T sütunu 30. sütun olsun, bu durumda siz bu ifadeyle 30 * 1 048 576 = 31 457 280 adet hücreyi temizliyorsunuz.
Bunun yerine şunu kullanınız:
Sayfa2.Range("A2:T" & Sayfa2.UsedRange.Rows.Count).ClearContents
Tek SATIR kod ile iş biter ve gereksiz alan temizliği olmaz.
UsedRange veri girilen son hücreyi ifade eder.
 
Konu Sahibi
Sayın RBozkurt yukarıda açıkladığım gibi:

"Bu arada rows(1).delete 1. satırı siler.
Range("A1").ClearContents a1 hücresinin içeriğini temizler. Sadece veri silinir. Biçimlendirme silinmez. Dolayısı ile Koş.B silinmez.
Range("A1").Clear biçimlendirme dahil her şeyi siler."

Siz o alanda daha önce .Clear kullanmışsınızdır. Bu sebeple ilgili alandaki Koş.B silinmiştir.
EĞER Koş.B silinmesini istemiyorsanız .ClearContents kullanmalısınız.
Koşullu biçimlendirmelerinizi tekrar düzenleyin. .ClearContents kullandığınızda silinmediklerini göreceksiniz.

Ayrıca kodlarınızda şu yapıyı kullanıyorsunuz:
Range("A2:T" & Rows.Count).Clear
Bu ifadede kullanılan Rows.Count dosyanızdaki en son SATIR demektir. Yani 1048576 SATIR demek.
Bu şekilde kullanırsanız gereksiz iş yükü oluşturursunuz ki bu durumda PC kasılması çok normaldir.
Diyelim ki T sütunu 30. sütun olsun, bu durumda siz bu ifadeyle 30 * 1 048 576 = 31 457 280 adet hücreyi temizliyorsunuz.
Bunun yerine şunu kullanınız:
Sayfa2.Range("A2:T" & Sayfa2.UsedRange.Rows.Count).ClearContents
Tek SATIR kod ile iş biter ve gereksiz alan temizliği olmaz.
UsedRange veri girilen son hücreyi ifade eder.

Teşekkür ederim ubak bey sağolun.

.ClearContents kullandığım zaman dediğim gibi sayfada sadece görüntüde veriler kayboluyor. Çerçeve birleştirmeler vs kalıyor.

Ama .Clear kullanırsam tam istediğim şekilde tertemiz çıkartıyor fakat;
bu sefer de Koşullu Biçimlendirmedeki =$I$I uygulama hedefi =$I$1:$I$4 gibi değişiyor.
Temizlemeye 5. satırdan başlattım ya bu sebepten 4den sonrası çalışmıyor.

Öneriniz için UsedRange.Rows.Count).ClearContents teşekkürler bu şekilde güncelleyim eski makroyuda.

Yarın biraz kurcalayım buda çözülür yada satırları göz ardı edeceğim.
 
Ben .Clear ile her şeyi temizleyeyim (kenarlıklar vs silinmesini istediğiniz için) ama Koş.B silinmesin istiyorsanız makro kaydedici açıp ilgili alana Koş.B uygulayın. Oluşan kodları temizleme makrosunun sonuna ekleyin. Sadece kaydediciden gelen kodların ilk satırında range("a1:a10").select gibi bir ifade olur. Bu ifadeyi sizin alanınızı içerecek şekilde düzenleyin. İşlem tamamdır.
 
Merhaba.
Kod ilede koşullu biçimlendirme yaşılabilinir clear yaptıktan sonra bence.
 
Şu şekilde düzenleyebilirsiniz:

Sub sayfaTemizle()

'Anasayfa için silmeden bahsedilmemiş. Alttaki kodu ihtiyaca göre düzenleyip kullanabilirsiniz.
'Sayfa1.Range("A2:T" & Sayfa1.UsedRange.Rows.Count).Clear

'Her sayfada
'1- Koş.B temizliyoruz.
'2- Sayfayı temziliyoruz.
'3- Koş.B tekrar ekliyoruz.

'Alt satırlar diğer sayfalar için.
Sayfa2.Range("A2:T" & Sayfa2.UsedRange.Rows.Count).FormatConditions.Delete
Sayfa2.Range("A2:T" & Sayfa2.UsedRange.Rows.Count).Clear
'Buraya makro kaydediciden aldığınız Koş.B kodları gelecek.

Sayfa3.Range("A1:H" & Sayfa3.UsedRange.Rows.Count).FormatConditions.Delete
Sayfa3.Range("A1:H" & Sayfa3.UsedRange.Rows.Count).Clear
'Buraya makro kaydediciden aldığınız Koş.B kodları gelecek.

Sayfa4.Range("A5:T" & Sayfa4.UsedRange.Rows.Count).FormatConditions.Delete
Sayfa4.Range("A5:I" & Sayfa4.UsedRange.Rows.Count).Clear
'Buraya makro kaydediciden aldığınız Koş.B kodları gelecek.

Sayfa5.Range("A2:V" & Sayfa5.UsedRange.Rows.Count).FormatConditions.Delete
Sayfa5.Range("A2:V" & Sayfa5.UsedRange.Rows.Count).Clear
'Buraya makro kaydediciden aldığınız Koş.B kodları gelecek.
End Sub
 
Çözüm
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst