hücre kilitleme

Kodla Büyü

serkanholep

Seçkin Üye
Seçkin Üye
Mesajlar
708
arakadaşlar ekteki analiz programında 1.sınav sayfasında öğrencilere puan verirken eğer soru puanı yoksa o hücrelerin kilitlenmesini toplam puanın 100 ü aşması durumunda uyarı vermesini istiyorum ama yapamadım
 

Ekli dosyalar

Kilitlenmesine gerek var mı?
Aşağıdaki kodları siz mi yazmıştınız?
Private Sub Worksheet_Change(ByVal Target As Range)
baslik = "Hatacık"
Dim s As Integer
Dim d As Integer
For d = 5 To 44
For s = 6 To 47
If Cells(s, d) > Cells(4, d) Then
MsgBox (Cells(s, d).Address(0, 0) & " Hücresi sorunun puan değerinden yüksek!!!"), vbCritical, baslik
End If

If Cells(s, d) < 0 Then
MsgBox (Cells(s, d).Address(0, 0) & " Hücresi 0' dan küçük!!!"), vbCritical, baslik
End If


Next
Next
End Sub
Bu kodu aşağıdaki şekilde değiştirerek kilitleme işlemi hariç istediğinizi hem daha kısa yoldan hem de daha performanslı bir şekilde elde edebilirsiniz.
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("E6:AR45")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

Application.EnableEvents = False

'Eğer hücre değeri 0'dan küçükse
If Target.Value < 0 Then
MsgBox Target.Address & " Hücresi 0' dan küçük. Lütfen kontrol ediniz.", vbCritical, "Hata"
Target.Select
End If

'Eğer hücre değeri soru puanından büyükse
If Target.Value > Cells(4, Target.Column).Value Then
MsgBox Target.Address & " Hücresi sorunun puan değerinden yüksek. Lütfen kontrol ediniz", vbCritical, "Hata"
Target.Select
End If

'Eğer hücreyle aynı satırdaki AS sütunundaki not puanı toplamı 100'den büyük ise
If Range("AS" & Target.Row) > 100 Then
MsgBox "Öğrencinin Sınav Puanı 100 den büyük. Lütfen kontrol ediniz", vbCritical, "Uyarı"
Target.Select
End If

Application.EnableEvents = True
End Sub
 
hocam o kadar excel bilgim yok

bir de yine çok uzun yoldan yapmaya çalıştığım ama programı çok yavaşlatan bir sorum var

konunot sayfasında soru puanları girilen kadar soru sorulacağı için sınav sayfasında boş soru sütunlarına veri girilmemesi gerekiyor

veri doğrulamadan yapmaya çalıştım olmadı

varmıdır bir yolu
 
Sanırım istediğiniz 1. SINAV sayfasındaki AD6:AR45 arasını kilitli hale getirmek, eğer diyelim ki soru sayısı azaltılırsa da ona göre yeniden kilitleme yapmak istiyorsunuz.
Bunun için sayfa aktif olduğunda önce varolan korumayı kaldırmak, ardından kilitlenmesi gereken yerleri kilitlemek ya da kilitlerini açmak ardından tekrar sayfa korumayı etkinleştirmek gerekir. 5-10 satır kodla yapılabilecek bir şey ama öncelikle 1. SINAV için koruma şifresi nedir? Parola vermeniz illaki gerekli mi? Parola vermeseniz de olur mu?
Parolayı yazarsanız, kodları ekleyebilirim.

Tamam, şifre 1 miş.
 
hocam parola vermeyince hata veriyor satır gizle prosedürü

e6:ar47 arasındaki hücreler konunot sayfasındaki soru sayısına bağımlı olsun

oraya öğretmen sadece sorunun puanını ve konusunu girsin

sınav sayfasında sadece girilen puanların (yani soru sayısı kadar) girişleri yapılsın diğerlerine yapılamasın
 
1. SINAV sayfasına girildiğinde (sayfa aktifleştirildiğinde) sayfanın koruması kaldırılıyor, ardından E5:AR5 hücre aralığında boş hücreyi buluyor. Bu hücrenin bir altındaki satırdan AR45 aralığına kadar olan hücreleri kilitliyor ve ardından korumayı yeniden etkinleştiriyor. Sizin sistemden farkı kilitli hücrelerin seçilmesini de engelliyor. Eğer bu işlemi yapmasını istemezseniz (ki eğer diğer özellikler için sorun olmazsa böylesi daha kullanışlı olacaktır) 1. SAYFA'nın kodunu görüntüleyip,
ActiveSheet.EnableSelection = xlUnlockedCells
satırının başına ' (tek tırnak) ekleyin.
 

Ekli dosyalar

BBNET
Geri
Üst