Farklı kaydet sorunu

ynmcan

Altın Üye
Katılım
30 Ağustos 2008
Mesajlar
677
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
29-05-2025
Merhaba,

3 vardiya sayfası olan servis programı üzerinde çalışmaktayım

Burada personeli vardiyalarına göre servislere yerleştiriyorum

Her servisin 30 satırı var

İşlem bitikten sonra sayfadaki “FARKLI kaydet” butonu ile dosyayı

Personel olmayan servisleri ve personel olan servislerdeki boş satırları silerek Farklı kaydediyorum

Sorun;

Farkılı kaydedilen dosyada,

1.VARDİYA sayfasında boş satırlar silinirken

2:VARDİYA ve 3.VARDİYA sayfalarında boş satırlar gizlenmiş olarak kalıyor, silinmiyor

Bunun nedeni nedir?

Örnek dosyam ekte

Kullandığım kod


Kod:
Dim servis, basSat
    
For syf = 1 To 3

For servis = 1 To 30

     basSat = (servis - 1) * 34 + 6

     sat = Sheets(syf).Cells(basSat + 30, "C").End(xlUp).Row + 1

     If Sheets(syf).Range("B" & basSat) <> "" Then
    
     Sheets(syf).Range("B" & sat & ":G" & basSat + 29).EntireRow.Hidden = True
 
 Else
 
  'On Error Resume Next
 
     Sheets(syf).Range("B" & sat - 4 & ":G" & basSat + 29).EntireRow.Hidden = True

     Sheets(syf).Range("B1:G2").EntireRow.Hidden = False

End If
    
Next servis
 

Ekli dosyalar

ynmcan

Altın Üye
Katılım
30 Ağustos 2008
Mesajlar
677
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
29-05-2025
Örnek dosyamı sadeleştirdim.

3 vardiya sayfasında gizli satırlar var.

"GİZLİ SATIRLARI SİL" Butonuna tıkladığımda

3 sayfadaki gizli satırları aynı anda silmesini istiyorum

aşağıdaki kodu kullanıyorum.

Ancak ilk sayfadaki gizli satırları sildiği halde diğer sayfalardakileri silemiyorum silmiyor.

Kod:
For syf = 1 To 3
For a = Sheets(syf).UsedRange.Rows.Count To 2 Step -1
If Rows(a).Hidden = True Then Rows(a).Delete
Next a
Next syf
Örnek dosyam ekte
 

Ekli dosyalar

Korhan Ayhan

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

If Rows(a).Hidden = True Then Rows(a).Delete ifadesi sadece aktif sayfa için işlem yapacaktır. Sebebi ise sayfa adı belirtmediğinizden dolayıdır. Aşağıdaki gibi düzenlerseniz daha doğru sonuç alabilirsiniz.

If Sheets(syf).Rows(a).Hidden = True Then Sheets(syf).Rows(a).Delete
 

ynmcan

Altın Üye
Katılım
30 Ağustos 2008
Mesajlar
677
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
29-05-2025
Korhan Bey,
Öncelikle cevap için teşekkür ederim.

Kodu dediğiniz gibi değiştirdim.

Ancak tüm sayfalarda son gizli staır hariç tüm gizli satırları siliyor.

Ayrıca birçok deneme yaptım ve şunu fark ettim

Gizli satırların hepsinin alt ve üstünde veri var ise veya hepsinin karşısında kenarlık var ise

Gizli satırların hepsini siliyor, bunların birinde bile kenarlık veya alt ve üstünde (alt üst beraber) veri yok ise

Tüm sayfalardaki son gizli satırı silmiyor.

Asıl dosyamda bir sorun görünmüyor çünkü çizelge var.

başka bir çalışmada kulanırken lazım olabilir.

Hücreler boş, alt üste veri, kenarlık olarak üç ayrı örnek dosyayı ekledim.
 

Ekli dosyalar

Korhan Ayhan

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

2. mesajda "3 sayfadaki gizli satırları aynı anda silmesini istiyorum" ifadesini yazmışsınız..

Bunun içinde bir döngü kullanmışsınız. Bu döngü son satırdan 2. satıra kadar tüm satırları kontrol ediyor. Amacınız sadece son gizli satırı silmekse ilk işlemden sonra döngüden çıkmanız (Exit For) gerekir. Aksi durumda döngü 2. satıra kadar işlem yapmaya devam edecektir.

Bu durumlara göre kodlarınızı revize etmeniz gerekir.
 

ynmcan

Altın Üye
Katılım
30 Ağustos 2008
Mesajlar
677
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
29-05-2025
Amacım son gizli satırı silmek değil, 2 mesajımda anlatığım gibi, 3 sayfadaki tüm gizli satırları silmek.
ancak gizli satırların alt ve üstünde veri veya kenarlık yok ise (boş ise) sayfalardaki son gizli satırı silmiyor.
 
Üst