H

Çözüldü 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

hakki83

Site Üyesi
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.
 
Üst