Tự động Add comment vào các cell bị chỉnh sửa (1 người xem)

Liên hệ QC

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

nguyendinhtutw

Thành viên chính thức
Tham gia
17/4/17
Bài viết
73
Được thích
3
Giới tính
Nam
Dear các bác,
Em có một file excel mẫu như đính kèm. Bây giờ em muốn khi người nào đó chỉnh sửa ô nào đó trong vùng dữ liệu thì ô đó sẽ được tự động add 01 comment trong đó đưa ra các nội dung như:
(1) Ngày chỉnh sửa
(2) Chỉnh sửa bởi ai
(3) Chỉnh sửa từ "giá trị cũ" sang "giá trị mới"
Em có tìm hiểu được một code VBA trên mạng, tuy nhiên code này chỉ đáp ứng được 02 yêu cầu số (1) và số (2), nhờ các bác giúp em chỉnh sửa đoạn code sau để có thể thực hiện được yêu cầu số (3). Em trân trọng cảm ơn.
.....
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OldComment As String, NewComment As String, objCell As Range
If Target.Cells.Count > 1 Then Exit Sub
NewComment = "Changed on " & Now() & " by " & Application.UserName
If Target.Comment Is Nothing Then
Target.AddComment NewComment
Else
OldComment = Target.Comment.Text
Target.Comment.Text NewComment & vbLf & OldComment
End If
End If
End Sub
........
 

File đính kèm

Mình quick code, chắc còn nhiều vấn đề nhưng bạn dùng tạm

PHP:
Public a As String
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OldComment As String, NewComment As String, objCell As Range
If Target.Cells.Count > 1 Then Exit Sub
    NewComment = Application.UserName & "-" & Now() & " : " & a & "->" & Target.Value
    If Target.Comment Is Nothing Then
        Target.AddComment NewComment
    Else
        OldComment = Target.Comment.Text
        Target.Comment.Text NewComment & vbLf & OldComment
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 Then a = Target.Value Else a = ""
End Sub
 
Upvote 0
Mình quick code, chắc còn nhiều vấn đề nhưng bạn dùng tạm

PHP:
Public a As String
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OldComment As String, NewComment As String, objCell As Range
If Target.Cells.Count > 1 Then Exit Sub
    NewComment = Application.UserName & "-" & Now() & " : " & a & "->" & Target.Value
    If Target.Comment Is Nothing Then
        Target.AddComment NewComment
    Else
        OldComment = Target.Comment.Text
        Target.Comment.Text NewComment & vbLf & OldComment
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 Then a = Target.Value Else a = ""
End Sub
Cảm ơn bác, em áp dụng thử code của bác nhưng comment không thể hiện "giá trị cũ"
 

File đính kèm

  • snip.png
    snip.png
    4.3 KB · Đọc: 17
Upvote 0
Em có tìm hiểu được đoạn này:

NewComment = "Changed on " & Now() & " by " & Application.UserName & _
" from " & OldCellValue

Nhưng áp dụng vào file của em thì không được, không biết có bị sai ở chỗ nào không nữa.
 
Upvote 0
"Giá trị cũ" lúc đầu là một empty cell ?? Bên máy mình vẫn hiển thị bình thường :)
 
Upvote 0
"Giá trị cũ" lúc đầu là một empty cell ?? Bên máy mình vẫn hiển thị bình thường :)
không ạ, em đã thử thay đổi nhiều lần, nhưng nó chỉ cho ra "giá trị mới" thôi ạ, bác có thể thao tác giúp em trên file mẫu đính kèm ở đầu không ạ? Em cảm ơn bác
 
Upvote 0
Ở máy mình mọi chuyện vẫn ổn . Mình cũng chưa đưa vùng vào selection change event, bạn tự nhìn phía bên trên và đổi nhé
Chào bạn. Cho mình hỏi thêm với
1. Vùng dữ liệu mình cần add comment không liên tục (ví dụ chỉ cần add cho cột D, G, M...) vậy cần sửa code như thế nào?
2. Bổ sung code ra sao để khung comment tự autosize cho vừa với nội dung comment ?
3. Đối với ô mà giá trị là hàm chứ không phải là hằng hay text thì báo lỗi. Cách sửa lỗi này như nào ?
Cảm ơn bạn
 
Upvote 0
Ở máy mình mọi chuyện vẫn ổn . Mình cũng chưa đưa vùng vào selection change event, bạn tự nhìn phía bên trên và đổi nhé
Cảm ơn bạn đã cho mình thêm hiểu biết về 1 comment linh động.
Mình hỏi thêm chút là nếu mình chỉ muốn Comment hiện thị cập nhập 2 lần chỉnh sửa gần nhất thì phải sửa code như thế nào bạn ơi
 
Upvote 0
Web KT

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

Back
Top Bottom