Koşula Göre Makro ile Hücre Kilitleme

Soru Koşula Göre Makro ile Hücre Kilitleme

haydargenc

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba,

Aşağıdaki koşulu macro ile yapmanız adına desteğinizi rica edyorum. Dosya ektedir. Ama kodu yazarsanız da ben dosyaya işleyebilirim.

Aslında işin özeti şu: D4:AH4 aralığında 31 adet hücre var, en fazla 18 hücreye veri girebilmeliyiz, 19 olmamalı bu. 19uncu doluyu girilemesin, yani 18den sonra hücreler kilitlensin ve "Gün sınırını aştınız, artık vardiya giremezsiniz!" Uyarısı versin tamama basıp kapatılsın uyarı...

1633971576079.webp



Şimdiden teşekkürler
 

Ekli dosyalar

Moderatörün son düzenlenenleri:
@haydar genç

Bence, istediğiniz husus için makro kullanmaya gerek yok.

D4:AH13 alanını seçin, bu alan seçiliyken VERİ DOĞRULAMA menüsünü açıp,
üstteki menüden ÖZEL'i seçin (en alttaki seçenek) ve aynı ekranda alttaki formül alanına
=EĞERSAY($D4:$AH4;"<>")<=18 formülünü uygulayın. Veri doğrulama ekranındaki HATA UYARISI
kulakçığına da istediğiniz uyarı metnini yazıp işlemi onaylayın.

.
 
@haydar genç

Bence, istediğiniz husus için makro kullanmaya gerek yok.

D4:AH13 alanını seçin, bu alan seçiliyken VERİ DOĞRULAMA menüsünü açıp,
üstteki menüden ÖZEL'i seçin (en alttaki seçenek) ve aynı ekranda alttaki formül alanına
=EĞERSAY($D4:$AH4;"<>")<=18 formülünü uygulayın. Veri doğrulama ekranındaki HATA UYARISI
kulakçığına da istediğiniz uyarı metnini yazıp işlemi onaylayın.

.
@Ömer BARAN teşekkürler ancak veri doğrulamada şöyle bir sorun oluyor;
elle hücrelere veri girdiğimizde yöntem başarılı oluyor
ama copy pate ile hücreye değer kopyaladığımızda yasak deliniyor, tüm hücreler dolabiliyor.
o yüzde makro istiyorum.
 
Kopyala/yapıştır engellemeyi de içeren makro çok anlamlı gelmedi (düşünmek lazım ama zahmetli de olabilir) bana açıkçası.

Belki şöyle düşünülebilir; kopyala/yapıştır sonrası (ya da sayfadan ayrılırken otomatik ya da sayfaya eklenecek bir düğme ile),
4'üncü satırdan itibaren (satır atlayarak) D:AH sütunlarında dolu boş kontrolü yaptırılıp, 18'inciden sağda kalanlar kolaylıkla silinebilir.

.
 
Kopyala/yapıştır engellemeyi de içeren makro çok anlamlı gelmedi (düşünmek lazım ama zahmetli de olabilir) bana açıkçası.

Belki şöyle düşünülebilir; kopyala/yapıştır sonrası (ya da sayfadan ayrılırken otomatik ya da sayfaya eklenecek bir düğme ile),
4'üncü satırdan itibaren (satır atlayarak) D:AH sütunlarında dolu boş kontrolü yaptırılıp, 18'inciden sağda kalanlar kolaylıkla silinebilir.

.
Evet Copy paste iptal olmamalı.
Sevgili @Ömer BARAN şöyle yapamaz mıyız?
Biraz araştırdım kilitleme konusunu, unprotect ve protect yordamı var...
Gerekirse macroyu CT stununa bağlamayalım.

macro ile ıf komutu kullansak,
D4:AH4 aralığına her veri girildiğinde bu aralıkta dolu hücreleri saydırsak,
18den büyükse sayfaya öncede koyduğum KİLİT ActiveSheet.Unprotect ile kaldırılsa,
ve ardından TÜM SAYFAYI ActiveSheet.protect ile kilitlese.
Bu esnada bir uyarı çıksa "Gün sınırını aştınız, artık vardiya giremezsiniz!" dese..
Sonra o uyarı kapatılsa ve bir uyarı daha çıksa "devam etmek için tıklayın" dese
Tıklandığında TÜM SAYFA KİLİDİ unprotect ile kaldırılsa, (sifre 1234 olabilir)...
Ve son girilen 19.uncu dolu hücre silinse.
Ardından benim ilk atadığım KISMİ ALANLARIN KİLİDİ devreye girse..

Bunun olablirliği nedir acaba. Bu arada benim sayfa korumam işi bozuyorsa onu tümden iptal edebiliriz....
 
İstediğiniz husus için sayfa koruması pek anlamlı değil.
Alt taraftan sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
açılacak VBA ekranında sağdaki boş alana şu kodları yapıştırıp hücrelere veri yazarak denemeler yapın.

Tek numaralı satırlar (,3,5...) serbest, A-C sütunları serbest, AH sütununda sonrakiler serbest,
C sütunundaki son veri satırından sonraki satırlar serbest.
Geriye sadece dolu satırlarda D:AH arasındaki ÇİFT numaralı satırlar kalıyor, bu da zaten veri girilecek satırlar/alanlar oluyor.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(18 satır)
 
İstediğiniz husus için sayfa koruması pek anlamlı değil.
Alt taraftan sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
açılacak VBA ekranında sağdaki boş alana şu kodları yapıştırıp hücrelere veri yazarak denemeler yapın.

Tek numaralı satırlar (,3,5...) serbest, A-C sütunları serbest, AH sütununda sonrakiler serbest,
C sütunundaki son veri satırından sonraki satırlar serbest.
Geriye sadece dolu satırlarda D:AH arasındaki ÇİFT numaralı satırlar kalıyor, bu da zaten veri girilecek satırlar/alanlar oluyor.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(18 satır)


Üstat Harikasınız... Ta kendisi.(y)(y)
Aslında hücre kilitlenmesini boşa aramışım. Yanlış yönlendirdim.
Teşekkürler elinize sağlık.
 
İstediğiniz husus için sayfa koruması pek anlamlı değil.
Alt taraftan sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
açılacak VBA ekranında sağdaki boş alana şu kodları yapıştırıp hücrelere veri yazarak denemeler yapın.

Tek numaralı satırlar (,3,5...) serbest, A-C sütunları serbest, AH sütununda sonrakiler serbest,
C sütunundaki son veri satırından sonraki satırlar serbest.
Geriye sadece dolu satırlarda D:AH arasındaki ÇİFT numaralı satırlar kalıyor, bu da zaten veri girilecek satırlar/alanlar oluyor.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(18 satır)

@Ömer BARAN hocam,

Şablon süper çalışıyor. Bir ricam daha olacak. Yanlara doğru sheet'leriçoğaltıyorum. Tüm sheetlerde çalışacak şekilde revize yapabilir miyiz.
Yani her copyaladığım sheet'de çalışsın stiyorum markro.

destrek olursans evinirim
 
@haydar genç

Önceki verdiğim cevaptaki kodu (ilgili sayfanın kod bölümüne uygulamıştınız) silin,
VBA ekranında ThisWorkbook (BuÇalışmaKitabı) bölümüne aşağıdaki kodu yapıştırın.
Belirlediğimiz kural ve işlemler, adında PUANT ibaresi geçen tüm sayfaları kapsar ve o sayfa(lar)da gerekli işlemi yapar.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(19 satır)
 
@haydar genç

Önceki verdiğim cevaptaki kodu (ilgili sayfanın kod bölümüne uygulamıştınız) silin,
VBA ekranında ThisWorkbook (BuÇalışmaKitabı) bölümüne aşağıdaki kodu yapıştırın.
Belirlediğimiz kural ve işlemler, adında PUANT ibaresi geçen tüm sayfaları kapsar ve o sayfa(lar)da gerekli işlemi yapar.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(19 satır)

Çok teşekkürler🙏
 
Üst