Yazıcı için belli satırdan aşağısının temizlenmesi

  • Konuyu başlatan Konuyu başlatan hakki83
  • Başlangıç tarihi Başlangıç tarihi

Kısa Açıklama

Yazıcı için belli satırdan aşağısının temizlenmesi isimli başlıkta, ilgili işlemlere dair detaylar yer almaktadır.
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba

Ekteki dosyada sayfa 1 ve 2’de iki örnek göstermeye çalıştım.

A sütununa isimler dökülüyor
B veya B-C-D gibi sütunlara da veriler dökülmektedir. Örneklerde görüldüğü haliyle.

Yazıcıdan çıkartma aşamasında biraz işi kolaylaştırabilmek için, A sütunu hariç, en son veri hangi satırdaysa o satırdan aşağısını temizlemek istiyorum. Ama son satır sabit değil, hep değişebilir.

Örnek
Sayfa1’de 12’nci safır ve aşağısı tamamen temizlenmeli.
Sayfa2’de 14’üncü satır ve aşağısı silinmeli.

Teşekkürler
 
Ekli dosyalar
@hakki83

Ben kodu SELECT ile sonlandırdım (silinecek alanı görebilmeniz için), sondaki Select yerine ClearContents yazarsınız.
-- 1'inci satıra (başlık satırı) göre son dolu sütun tespit edilir,
-- ardından da B sütunundan son sütuna kadarki sütunlarda son dolu hücrenin satır numarası bulunur,
-- son dolu hücrenin satır numarası +1 'den itibaren A sütunundaki hücreler seçilir/silinir.

Kodu uygun bir MODULE yapıştırın, işlem aktif sayfada gerçekleştirilir.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(7 satır)
 
Selamlar,
İstediğiniz / beklentiniz bu değil ama, Çok kısıtlı Makro bilgim çerçevesinde
Kendi yöntemimle Baskı Önizleme
** A kolonundaki fazlalık olan verilerin silinmesinin gerekli olduğunu düşünmüyorum...
** A kolonu dahil olmak üzere yazdırılacak Alanın tanımlanıp bu alanın Baskı ön izlemesi şeklinde yapıldı.
** Alanın tanımlanması, formüllerle dinamik alan şeklinde yapıldı.
Bunun için Sayfa1 için yazarsak
1 - Öncelikle B1 hücresinden itibaren 1. satırda dolu olan en son kolon ad tanımlaması yapıldı.
MaxCol1 : =MAK(EĞERHATA(KAÇINCI("zzzz";Sayfa1!$B$1:$XFD$1);1);EĞERHATA(KAÇINCI(9^99;Sayfa1!$B$1:$XFD$1);1))
2 - MaxCol1 ad tanımlamasından yararlanarak 10000 satır baz alınarak, en son dolu olan satır için ad tanımlaması yapıldı
(10000 satır yerine A kolonunun son dolu hücresine kadarki satır sayısı da alınabilir..)
MaxRow1 : =MAK(EĞER(KAYDIR(Sayfa1!$B$1;;;10000;MaxCol1)<>"";SATIR(KAYDIR(Sayfa1!$B$1;;;10000;MaxCol1))))
3 - MaxRow1 ve MaxCol1 ad tanımlamalarından yararlanarak Yazdırılacak Alanın ad tanımlaması yapıldı.
Alan1 : =KAYDIR(Sayfa1!$A$1;;;MaxRow1;MaxCol1+1)
4 - Sayfa1 kod sayfasında da
Sub Test1()
ActiveSheet.Range("Alan1").PrintPreview
End Sub

Aynı olay Sayfa2 için de yapıldı.
Dokumanı incelersiniz... Veri girerek / silerek deneyebilirsiniz...
 
Ekli dosyalar
@hakki83

Ben kodu SELECT ile sonlandırdım (silinecek alanı görebilmeniz için), sondaki Select yerine ClearContents yazarsınız.
-- 1'inci satıra (başlık satırı) göre son dolu sütun tespit edilir,
-- ardından da B sütunundan son sütuna kadarki sütunlarda son dolu hücrenin satır numarası bulunur,
-- son dolu hücrenin satır numarası +1 'den itibaren A sütunundaki hücreler seçilir/silinir.

Kodu uygun bir MODULE yapıştırın, işlem aktif sayfada gerçekleştirilir.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(7 satır)
Sayın Ömer Baran hocam emeğinize sağlık, gayet güzel.

Şöyle bir ekleme yapmamız gerekiyor;
Sadece A sütunundaki hücreleri değil; tüm satırları silmemiz gerekiyor ki; yazıcıdan çıkartmaya hazır hale gelsin.

Zira diğer hücrelerde çerçeve kenarlık biçimlendirmeleri var.

(ClearContents olarak da denedim, Clear olarak da denedim, biri hücredeki verileri, diğeri hem veri hem biçimlendirmeler olarak A yı gayet güzel siliyor, ama diğerlerinin de sillinmesi gerekiyor)
 
Moderatörün son düzenlenenleri:
Selamlar,
İstediğiniz / beklentiniz bu değil ama, Çok kısıtlı Makro bilgim çerçevesinde
Kendi yöntemimle Baskı Önizleme
** A kolonundaki fazlalık olan verilerin silinmesinin gerekli olduğunu düşünmüyorum...
** A kolonu dahil olmak üzere yazdırılacak Alanın tanımlanıp bu alanın Baskı ön izlemesi şeklinde yapıldı.
** Alanın tanımlanması, formüllerle dinamik alan şeklinde yapıldı.
Bunun için Sayfa1 için yazarsak
1 - Öncelikle B1 hücresinden itibaren 1. satırda dolu olan en son kolon ad tanımlaması yapıldı.
MaxCol1 : =MAK(EĞERHATA(KAÇINCI("zzzz";Sayfa1!$B$1:$XFD$1);1);EĞERHATA(KAÇINCI(9^99;Sayfa1!$B$1:$XFD$1);1))
2 - MaxCol1 ad tanımlamasından yararlanarak 10000 satır baz alınarak, en son dolu olan satır için ad tanımlaması yapıldı
(10000 satır yerine A kolonunun son dolu hücresine kadarki satır sayısı da alınabilir..)
MaxRow1 : =MAK(EĞER(KAYDIR(Sayfa1!$B$1;;;10000;MaxCol1)<>"";SATIR(KAYDIR(Sayfa1!$B$1;;;10000;MaxCol1))))
3 - MaxRow1 ve MaxCol1 ad tanımlamalarından yararlanarak Yazdırılacak Alanın ad tanımlaması yapıldı.
Alan1 : =KAYDIR(Sayfa1!$A$1;;;MaxRow1;MaxCol1+1)
4 - Sayfa1 kod sayfasında da
Sub Test1()
ActiveSheet.Range("Alan1").PrintPreview
End Sub

Aynı olay Sayfa2 için de yapıldı.
Dokumanı incelersiniz... Veri girerek / silerek deneyebilirsiniz...
Sayın 52779 hocam emeğinize sağlık, inceliyorum.
 
Geri
Üst