- Katılım
- 4 Ocak 2006
- Mesajlar
- 12,073
- Excel Vers. ve Dili
-
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodu kullanın:
Ayrıca excelde hücredeki veriyi dilmek için Backspace kullanmayın, Delete kullanın. Backspace kullandığınızda imleç hücrenin içine girer, hücreye bir şey yazmayacaksanız hücreden çıkmak için başka bir işlem yapmanız gerekir. Bir de muhtemelen biliyorsunuzdur, hücredeki veriyi "tamamen" değiştirmek için hücre içindeki veriyi silmenize gerek yok, yeni verinizi doğrudan hücreye yazabilirsiniz.
Kod:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Name = "PAZARTESİ" Or ActiveSheet.Name = "SALI" Or ActiveSheet.Name = "ÇARŞAMBA" Or _
ActiveSheet.Name = "PERŞEMBE" Or ActiveSheet.Name = "CUMA" Or ActiveSheet.Name = "CUMARTESİ" Then
If Intersect(Target, Range("D3:D14")) Is Nothing Then Exit Sub
If Selection.Count > 1 Then Exit Sub
If Target = "" Then
Target.Offset(0, 3) = "X"
GoTo 10
Else
If IsNumeric(Target) Then
If Target < 1 Then
Target.Offset(0, 3) = "X"
GoTo 10
End If
Application.EnableEvents = False
Target.Offset(0, 3) = "X"
Target = Evaluate("=IF(" & Target & ">2400,""Hatalı saat"",IF(" & Target & "<=24,TIME(" & Target _
& ",0,0),IF(" & Target & "<100,""Hatalı saat"",IF(MOD(" & Target & ",100)>59,""Hatalı dakika"",TIME((" _
& Target & "-(MOD(" & Target & ",100)))/100,MOD(" & Target & ",100),0)))))")
Application.EnableEvents = True
Else
Exit Sub
End If
End If
10:
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range( _
"D3:D14"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveSheet.Sort
.SetRange Range("B2:G14")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
yer = WorksheetFunction.Match("X", [G1:G14], 0)
Cells(yer, "E").Select
Cells(yer, "G") = ""
End If
End Sub