Khi sửa điểm hoặc xoá, thì copy điểm cũ sang cột khác (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

LienDong

Thành viên thường trực
Tham gia
22/11/12
Bài viết
223
Được thích
46
Nghề nghiệp
Ai nói đúng thì làm!
Các bạn giúp mình như sau
Em có cột C là điểm
Nếu mà sửa hay xoá số điểm của cột C thì số điểm của cột C trước khi sửa sẽ được copy và dán ở cột D
ví dụ: Nguyễn Hoàng Phương, điểm là 9, nếu sửa hay xoá thì nó dán vô cột D là 9
ghi chú: Mình muốn biết điểm cũ trước khi xoá hay sửa
Cảm ơn các bạn!
 

File đính kèm

Các bạn giúp mình như sau
Em có cột C là điểm
Nếu mà sửa hay xoá số điểm của cột C thì số điểm của cột C trước khi sửa sẽ được copy và dán ở cột D
ví dụ: Nguyễn Hoàng Phương, điểm là 9, nếu sửa hay xoá thì nó dán vô cột D là 9
ghi chú: Mình muốn biết điểm cũ trước khi xoá hay sửa
Cảm ơn các bạn!
Vậy thì chẳng cần đến lập trình, trước khi động đến cột C thì cứ copy rồi dán sang cột D thôi.
 
Upvote 0
Túm lại là copy và paste value sẵn nguyên cột gốc vào cột D, gọi tên là điểm ô ri gin. Rồi sau đó sửa tùm lum trong cột gốc không sao.
 
Upvote 0
Sửa mà không có chi tiết ngày giờ thì cũng chỉ là 1/2 tin tức.
 
Upvote 0
Các bạn giúp mình như sau
Em có cột C là điểm
Nếu mà sửa hay xoá số điểm của cột C thì số điểm của cột C trước khi sửa sẽ được copy và dán ở cột D
ví dụ: Nguyễn Hoàng Phương, điểm là 9, nếu sửa hay xoá thì nó dán vô cột D là 9
ghi chú: Mình muốn biết điểm cũ trước khi xoá hay sửa
Cảm ơn các bạn!
Tham khảo cách làm trong file
Code của người nước ngoài viết (tôi copy về sửa lại cho đúng ý định). Hy vọng dúng ý chủ thớt
Code trong sheet định sửa cột C
Mã:
Option Explicit
Dim vOldVal

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
On Error Resume Next
If Not Intersect(Target, Range("C2:C100")) Is Nothing Then
With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With
                    Target.Offset(0, 1) = vOldVal
    vOldVal = vbNullString

With Application
     .ScreenUpdating = True
     .EnableEvents = True
End With
End If
On Error GoTo 0
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Selection.Cells.Count > 1 Then Exit Sub
    vOldVal = Target
End Sub
 

File đính kèm

Upvote 0
Với code này thì click chơi chơi cũng chạy code, và lúc nào biến vOldVal cũng có giá trị và nằm chờ.
Xin hỏi anh là có thể sửa lại thế này được không?
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Selection.Cells.Count > 1 Then Exit Sub
    vOldVal = Target
End Sub
thành
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("C2:C50")) Is Nothing Then
    If Selection.Cells.Count > 1 Then Exit Sub
    vOldVal = Target
else
 vOldVal = vbNullString
end if
End Sub
Tức là chỉ bắt sự kiện khi click ở C2:C50 (Dự kiến sĩ số học sinh của 1 lớp khoảng <=50), còn click vào ô khác thì không có điều gì xảy ra.
 
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom