Değer varsa ilgili hücreler silinemesin

Katılım
12 Haziran 2017
Mesajlar
67
Beğeniler
1
Excel Vers. ve Dili
2016 Tr
#1
Değerli arkadaşlar,

7 sayfadan oluşan bir excel çalışma kitabım var.
Sayfa1’de öğrencilerin ad ve numara bilgileri var. C7: D7'den C66: D66'ya kadar.
Her öğrenci için Sayfa2'den Sayfa7'ye kadar olan sayfaların tümünde not yazılabilen yerler var. Buralar E7:AM7 aralığı ve AT7:BA7 aralıkları.
Bu aralıklar Sayfa2'den Sayfa7'ye kadar olan tüm sayfalarda her öğrenci için aşağı doğru E66:AM66 ve AT66:BA66'ya kadar iniyor.

İHTİYAÇ
A) Sayfa1’deki öğrenci ve numaraları Sayfa2'den Sayfa7'ye kadar olan sayfaların E7:AM7 aralığı ve AT7:BA7 aralıklarında(her öğrencinin ilişkili olduğu satırda) herhangi bir veri varsa silinememesi.
B) Silmek istendiğinde "Burayı silemezsiniz." uyarısının çıkması.

Örnek:
Sayfa1'deki C15: D15'te öğrencinin adı ve numarası var.
Sayfa2 ... Sayfa7 arasındaki sayfaların (E15:AM15 ve AT15:BA15) aralıklarında bir tane bile veri varsa Sayfa1 C15: D15'in silinememesi.
Yani E15:AM15 ve AT15:BA15 tamamen boşa eşit değilse silinememesi.

http://s3.dosya.tc/server14/xt946v/sileme.rar.html


Bu soruyu daha önce veri doğrulama ile ilgili sormuştum. Oradan olmuyormuş. Korhan Bey aşağıdaki makroyu önermişti. Makronun baktığı aralıkları düzenlemeyi bilmediğimden yardımlarınızı talep ederim.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    If Not IsEmpty(Target.Next) Then
        Application.Undo
    End If
    Application.EnableEvents = True
End Sub
Makro B1:B10'da veri varsa A1:A10 aralığında karşısında bulunan veriyi sildirmiyor.
 
Katılım
8 Mart 2011
Mesajlar
13,045
Beğeniler
736
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
#2
Merhaba.

Aslında bu tür işlemler için şifreli sayfa koruma en iyisidir ama ekteki belgede ben bir şeyler yaptım.

Hücrelerde tek tek işlem yapılması engelleniyor.

Önce Sayfa1'de no ve isimleri yazın, diğer sayfalara rastgele veriler yazın, sonra da Sayfa1'deki isim veya numarayı değiştirmeyi deneyin.

Belgeye, fareyle buraya tıklayarak da erişebilirsiniz.

.
 

Ekli dosyalar

Katılım
12 Haziran 2017
Mesajlar
67
Beğeniler
1
Excel Vers. ve Dili
2016 Tr
#3
Teşekkür

Ömer Bey,
Öncelikle konu ile ilgilenip belge gönderdiğiniz için teşekkürümü sunuyorum.
Belgeyi incelediğimde ihtiyacın giderildiğini görüyorum. Sorun gözükmüyor. Hatta 'kör istedi bir göz Allah verdi iki göz' hesabı verisi olan hücre silinmek istendiğinde uyarı ekranında karşılaşılan ilk veri bilgisinin adresini de gösteriyor. Böyle bir şey benim aklıma gelmemişti. İyi oldu.

İki hususu tam anlayamadığım için tekrar bilgi ricasında bulunacağım.
1.
Sayfa2'de A1 hücresi ile bu sayfada, yeşil boyanan satırların A sütunu (A7:A66 aralığı) kodlar tarafından kullanılıyor.

Bu alanların yerini değiştirmek için kodlarda Sheets("Sayfa2").[A1] kısmı ile Cells(Target.Row, "A") kısımlarını değiştirmelisiniz.


Yukarıdaki açıklamanızdaki hücre ve hücre aralıklarını kullanyorum. Benim belgemde buralar boş duruyor.
Bu durumda herhangi bir değişiklik yapmam gerekmiyor değil mi?

2.
Kodlar bu belgede Sayfa2'den Sayfa7'ye kadar toplamda 6 sayfaya bakarak işlemi gerçekleştiriyor.

Bir başka belgemde kullanmak üzere aynı kodun Sayfa2'den Sayfa5'e kadar toplamda 4 sayfaya bakarak işlem gerçekleştirmesi için koddaki nereyi değiştirmem gerekir?
 
Katılım
8 Mart 2011
Mesajlar
13,045
Beğeniler
736
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
#4
Tekrar merhaba.

İlk dolu hücrenin adresinin yararlı olacağını düşünmüştüm.
İstenilirse, tüm sayfaların ilgili satırlarında dolu hücrelerin adreslerinin tümü de görüntülenebilir ama neticede
1 hücrenin dolu olması veri yazmanın engellenmesi için yeterli olduğundan ilk dolu hücre adresinde olayı keseyim dedim.

Zaten kod'un işlem yaptığı sayfa A sütunu ve Sayfa2 A1 hücresi kullanılmıyorsa ona ilişkin değişikliğe gerek yok tabi.

Son isteğinizle ilgili olarak da kod'un aşağıdaki kısmında kırmızı renklendirdğim kısımları eklerseniz başka belgelerde de kullanabilirsiniz.
Kırmızı kısımdaki, kontrol edilecek sayfa adlarını kendi belgenize göre azaltabilir, artırabilir, sayfa isimlerini değiştirebilirsiniz.

Kod'da kontrol edilecek sütun aralığı, 5-53'üncü sütunlar (koyu renklendirip boyut büyüttüğüm kısım) ,
ancak bu sütunların arasında kalıp kontrol edilmeyecek sütunlar ise 40-45'inci sütunlar oluyor (bunu sağlayan kısmı mavi renklendirdim).
Aşağıdaki kod parçasındaki Sayfa1 kod'un işlem yapacağı sayfanın adı oluyor.
.
Kod:
    For s = 1 To ThisWorkbook.Sheets.Count
[B][COLOR="red"]        If Sheets(s).Name = "Sayfa2" Or _
            Sheets(s).Name = "Sayfa3" Or _
            Sheets(s).Name = "Sayfa4" Or _
            Sheets(s).Name = "Sayfa5"[/COLOR][/B] Then
        sat = Target.Row
        For ss =[B][SIZE="4"] 5 To 53[/SIZE][/B]
            [COLOR="blue"][B]If ss = 40 Then ss = 46[/B][/COLOR]
            If Sheets(s).Name <> "[B]Sayfa1[/B]" And Sheets(s).Cells(sat, ss).Value <> "" Then
                MsgBox "Bu hücreyi değiştiremezsiniz!" & vbLf & _
                    "Çünkü; " & Sheets(s).Name & " sayfasında " & _
                    Cells(sat, ss).Address(0, 0) & " hücresi DOLU."
                Cells(sat, "A") = 1: Target = Sheets("Sayfa2").[A1]: Exit Sub
            End If
[B][COLOR="Red"]        End If[/COLOR][/B]
        Next
    Next
 
Katılım
8 Mart 2011
Mesajlar
13,045
Beğeniler
736
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
#6
Deneme yapmamıştım.
Ekran görüntüsünde seçili durumda olan End If satırını hemen bir sonraki satıra alıp, yani 2 next satırı arasına alarak deneyin.

Ancak şunu hatırlatayım, eğer işlem sayfası dışında tüm sayfalara bakılmayacaksa bu düzenlemeyi yapmalısınız.
Zaten işlem sayfası dışındaki tüm sayfalara bakılacaksa kod'un ilk hali (eklediğim belgedeki hali) sorun çıkartmaz.
.
 
Katılım
12 Haziran 2017
Mesajlar
67
Beğeniler
1
Excel Vers. ve Dili
2016 Tr
#7
İfade ettiğiniz değişikliği yaptım. Sorun oluşmuyor artık. Sağ olun.

Ancak şunu hatırlatayım, eğer işlem sayfası dışında tüm sayfalara bakılmayacaksa bu düzenlemeyi yapmalısınız.

Yukarıdaki ifadeniz 2. mesajınızdaki dosyadaki kodun Çalışma Kitabında ne kadar sayfa varsa tümünü kontrol ettiği anlamını taşıyor sanırsam.
Orada 7 sayfa vardı, bu sayfa sayısı 70 de olsa hepsine bakıyor anladığım kadar.

Çalışma Kitabındaki belli sayfalara bakılacaksa da son kod kullanılacak. Bu bana uygun bir tercih olacak.
 
Katılım
8 Mart 2011
Mesajlar
13,045
Beğeniler
736
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
#8
Özetle; kodun uygulandığı sayfa dışında tüm sayfalar kontrol edilecekse örnek belgedeki kodu ilk haliyle, sadece belli sayfalara bakılacaksa kodu, sonradan sayfaya yazdığım şekilde düzenleyerek kullanmalısınız.
 
Üst