• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Makronun veri girişini engellemesi

  • Konbuyu başlatan Konbuyu başlatan tarık34
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Haziran 2017
Mesajlar
105
Excel Vers. ve Dili
2021 64 Bit Tr
Arkadaşlar,

Sayfa1’de E7:AM66 ve AT7:AW66 arasında kalan hücrelere veri giriyorum(Sayı ve harf olarak.).
Bu hücrelere veri girebilmeye bir şart getirmek istiyorum.

ŞART: Sayfa1’de AN7:AN66 aralığındaki dolu hücre sayısı 51’den küçükse giriş yapılabilsin.
Formülle ifadesi: =BAĞ_DEĞ_DOLU_SAY($AN$7:$AN$66)<51 ise E7:AM66 ve AT7:AW66 arasında kalan hücrelere veri girilebilsin.
Aksi durumda(51 olduğu andan itibaren) son yapılan giriş silinsin ve bir uyarı ekranı çıksın “Buraya giriş yapılamaz.” yazsın.

Yukarıda işlem Veri Doğrulama ile yapılabiliyor. Veri Doğrulamayı başka bir amaçla kullandığımdan aynı yere iki tane uygulayamıyorum.
 
Merhaba.

Alt taraftan uygulama yapılacak sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
açılan VBA ekranında sağdaki boş alana aşağıdaki kod blokunu yapıştırın.
.
Kod:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
If Intersect(Target, [E7:AM66, AT7:AW66]) Is Nothing Then Exit Sub
For sat = 7 To 66
    If Cells(sat, "AN").Value <> "" Then say = say + 1
Next
If say > 51 Then
    MsgBox "Kriter alanın istiap haddi doldu, veri yazamazsınız."
    Target = ""
End If
[B]End Sub[/B]
 
Ömer Bey,
Aşağıya bir örnek dosya ekledim.
https://www.dosyaupload.com/9v6t

Kod ilgili işlemi yapmadı. AN7:AN66 arasındaki hücreler formülle dolup boşalıyor. Bunun etkisi olabilir mi?
İlgili yerlerden toplu veri silince bir hata mesajı çıkıyor.
HATA:
 
Bilgisayar başında değilim şu an.
AN sütunundaki formül gerçek belgenizdeki formül müdür?
 
AN7'den AN66'ya kadar giden tam formül şu:
Kod:
=EĞER(EĞERSAY(AT7:AU7;"G")>0;"G";EĞER(EĞERSAY(AV7;"K")>0;"K";EĞER(EĞERSAY(AW7;"M")>0;"M";EĞER(VE(BAĞ_DEĞ_SAY(E7:AM7;AT7:AU7)>0;TOPLA(E7:AM7;AT7:AU7)=0);0;EĞER(TOPLA(E7:AM7;AT7:AU7)=0;"";TOPLA(E7:AM7;AT7:AU7))))))
 
Son düzenleme:
Tekrar merhaba.

Önceki cevabımı güncelledim. Sayfayı yenileyerek kontrol ediniz.
.
 
Teşekkür

Ömer Bey,
Son kodda If say > 51 Then yazan kısımdaki "51"i "50" olarak değiştirip belgeye uyguladığımda istenilen sonuca ulaşılabiliyor.
İlginize teşekkür ederim. Var olun.
 
Ömer Bey,
Önceki mesajımdan sonra bir durum fark ettim.
Dosyamda aktif satır ve sütun renklendirmesi kodu var.
Yazdığınız kodu da ekleyince kendiliğinden sayfayı korumaya alıp sayfa koruma hatası veriyor.
İki kod beraber çalışabilir mi?

SORUN ÇÖZÜLDÜ
Sorun satır sütun renklendiren kodun başında ve sonunda yer alan sayfa koruması ve kaldırması yapan kod parçasındanmış. Tekrar düzenleyip yazınca sorun çözüldü.


https://www.dosyaupload.com/9v8y
 
Son düzenleme:
Kendi sorununuzu çözmeniz en güzeli bence.
Kolay gelsin.
 
Sayın Ömer BARAN,
Yukarıda vermiş olduğunuz kodla ilgili küçük bir ricam olacak.
AN7:AN66 arasındaki veri sayısı 50'yi geçerse hata uyarısı çıkıyor. Burada bir sorun yok.

Hataya TAMAM deyince seçili hücre bir aşağıdaki hücreye kayıyor. Hataya neden olan hücre TAMAM dan sonra seçili kalabilir mi?

ÖRNEK: İlk 50 hücrenin dolu olduğunu düşünürsek 51. hücreye veri girince hata uyarısı çıkıyor. TAMAM deyince 52. hücre seçili oluyor. Bunu 51. hücre olarak düzenleyebilir miyiz?


İLGİLİ KOD:
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [E7:AM66, AT7:AW66]) Is Nothing Then Exit Sub
For sat = 7 To 66
    If Cells(sat, "AN").Value <> "" Then say = say + 1
Next
If say > 51 Then
    MsgBox "Kriter alanın istiap haddi doldu, veri yazamazsınız."
    Target = ""
End If
End Sub
 
Tekrar merhaba.

Kırmızı renklendirdiğim kısımları eklediğinizde istediğiniz olur.
.
Kod:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
If Intersect(Target, [E7:AM66, AT7:AW66]) Is Nothing Then Exit Sub
[COLOR="red"]If Target = "" Then Exit Sub[/COLOR]
For sat = 7 To 66
    If Cells(sat, "AN").Value <> "" Then say = say + 1
Next
If say > 51 Then
    MsgBox "Kriter alanın istiap haddi doldu, veri yazamazsınız."
    [COLOR="red"]Target.Activate:[/COLOR] Target = ""
End If
[B]End Sub[/B]
 
Teşekkür ederim.
Sorunu tam olarak çözdü.
 
Geri
Üst