- Mesajlar
- 708
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)
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
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