huuthang_bd
Chuyên gia GPE

1. Người ta ủng hộ trước, do mình nhập sai, giờ mình sửa lại mà sửa luôn cho người ta nhập cuối cùng là không hợp lý.Xem yêu cầu tại bài #4, tôi cải tiến thế này:
Các bạn test lại giùm! ---> Cho phép nhập nhầm có thể xóa sửa ---> Đương nhiên lúc này nhập sau sẽ có số TT lớn nhấtPHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim Clls As Range, k As Long If Not Intersect(Range("B2:B65536"), Target) Is Nothing Then Range([B65536].End(xlUp).Offset(1, 1), [C65536]).ClearContents For Each Clls In Target k = Evaluate("Max(C:C)") If Clls = "" Then Clls(, 2) = "" Else Clls(, 2) = k + 1 End If Next Clls End If End Sub
2. Nhập nhầm 1 dòng nào đó, xóa đi thì số thứ tự không đánh lại, số thứ tự không liên tục mà bị khuyết số vừa xóa.
Thử code này. Muốn xóa, sửa, copy thế nào thì tùy.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Del As Boolean
On Error Resume Next
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
For Each Cll In Intersect(Target, [B:B])
If Cll.Value <> "" Then
If Cll.Offset(, 1).Value = "" Then Cll.Offset(, 1).Value = WorksheetFunction.Max([C:C]) + 1
Else
Cll.Offset(, 1).ClearContents
Del = True
End If
Next
If Del = True Then
For Each Cl In [C2:C65536].SpecialCells(2)
Cl.Value = WorksheetFunction.Rank(Cl.Value, [C:C], 1)
Next
End If
End Sub