Kopyalarken Gizli satırlar alınmasın

  • Konuyu başlatan Konuyu başlatan nasyarx
  • Başlangıç tarihi Başlangıç tarihi
Aleyküm selam,

Kodlarınızı çok anlayamadım lakin Yalnızca Görünür Hücreleri Kopyalama linkinde istediğinizin basit cevabı var.

Yalnızda görünür hücreleri kopyalamak için kopyalama işlemini:
Range("A1:A4").Copy yerine Range("A1:A4").SpecialCells(xlCellTypeVisible).Copy şeklinde yazmanız yeterli olur.

Dosyanızda eğer kopyalama işlemini, e.Range(alan).Copy yapıyorsa, e.Range(alan).SpecialCells(xlCellTypeVisible).Copy olarak değiştirip dener misiniz?
 
Sorunun kaynağı, SpecialCells(....visible) mevzusu değil de birleştirilmiş hücrelerin varlığı.

Diyelim A1:A4 birleştirilmiş, 3'üncü satır da bir şekilde (elle/makroyla/filtre uygulaması nedeniyle vs) gizlenmiş durumda.

Bu durumda görünen hücreler A1, A2, A4 oluyor. SpecialCells(...Visible) diyerek kopyala komutu verildiğinde bu komut çalışamaz.

Bence izlenmesi gereken yöntem;
sayfayı (en azından D4:AS & sonsatir alanını) bütün olarak kopyalayıp,
kaynak sayfadaki satırların SpecialCells(xlCellTypeVisible) ile kesişip kesişmediğinin denetimden geçirilip,
kaynak sayfada görünmeyen hücrelerin satırlarının hedef sayfada silinmesi.

.
 
Sn. @nasyarx

Madem bundan önceki mesajda izlenmesi gereken yöntem diye açıklama yazdım kod önerimi de yazayım dedim.
Mevcut kodda yer alan;
ay.[D4].PasteSpecial Paste:=xlPasteValues: ay.[D4].PasteSpecial Paste:=xlPasteFormats
satırının hemen altına aşağıdaki satırların eklenmesi yeterli olur gibi duruyor.
Bir-iki kenarlık sıkıntısı var galiba ama bunu da EKDERS sayfasındaki kenarlık ayarlarını gözden geçirerek halledersiniz sanırım.

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(3 satır)
 
O kısmın silinme sebebi ; a değişkeninin tespit edildiği, kodun yukarı kısmındaki ilgili satır ve
sütun genişliklerinin düzenlendiği For...Next döngüsünden sonraki With ay....End with içerisindeki yapı.

-- Kodun üst tarafındaki a değişkeni başka yerde gerekmiyorsa, kodun üst taraflarındaki
ax = .[K2] + 1: a = WorksheetFunction.Match(ax, .[D:D], 0)
satırını
ax = .[K2] + 1: a = e.Cells(Rows.Count, 5).End(3).Row
şeklinde değiştirin.

-- With ay....End with kısmını da şöyle değiştirin.

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(4 satır)
 
Tamirat zor iş @nasyarx
Olması gerekeni (ney silinecek, ney silinmeyecek) bilmediğim için tahmin yürütüyorum.
O zaman üstte a değişkenine ait satırı eski haline getirin ama With ay ..... End With içerisindeki
ikinci satırda yer alan .Rows(a & ":" & st).Delete: .Rows("7:8").Delete kısmını (o satırın gerisi kalsın) kısmını devre dışı bırakın.
 
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst