Target = Target & " " & Now()
Đương nhiên là vậy rồiAi cho mình hay tại sao như mình đã làm trong file đính kèm datevalue bị lập đi lập lại vậy
![]()
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, ActiveSheet.Range("a1:Z1000")) Is Nothing Then
Target = Target & " " & Now()
End If
Application.EnableEvents = True
End Sub
Bạn xem thử đúng ý chưa
Bạn mở file lên, bấm Alt + F11 sẽ biết người ta viết gì trong đó ---> Và đó chính là code VBA dùng để tự động hóa yêu cầu của bạnHai VD của bạn Le tin và Pozsi rất đúng ý mình. Nhưng thật sự mình không biết excel nhiều và nhất là macro, các bạn có thể chỉ cho mình chi tiết các bước làm được không?.Xin cám ơn các bạn
Trường hợp của bạn phải sửa lại: code sẽ chạy khi có thay đổi ở cột C (chứ không phải cột B)Dựa trên VD của các bạn mình có ý tưởng là thêm 1 hàm if như trong File đính kèm.Nhưng khi dữ liệu thay đổi thì không thấy cột hiển thị ngày tự động nữa.Và một điều nữa là với VD trên thì bắt buộc phải nhập từng dòng một thì mới tự động hiện ngày không cho thao tác copy.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Clls As Range
If Not Intersect(Target, [C2:C5000]) Is Nothing Then
For Each Clls In Target
If Clls = 1 Then
Cells(Clls.Row, 1) = Now
End If
Next Clls
End If
End Sub
Cám ơn ndu96081631 nhiều nhưng mà trong VD trên ý của mình muốn là khi giá trị ở cột B thay đổi theo Hàm if, mà ra giá trị "a" thì giá trị ngày mới hiện ra, còn không thì không hiển thị.Mong bạn chỉ giúp!!!1Trường hợp của bạn phải sửa lại: code sẽ chạy khi có thay đổi ở cột C (chứ không phải cột B)
Code này cho phép bạn copy/paste thoải máiPHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim Clls As Range If Not Intersect(Target, [C2:C5000]) Is Nothing Then For Each Clls In Target If Clls = 1 Then Cells(Clls.Row, 1) = Now End If Next Clls End If End Sub
Cám ơn ndu96081631 nhiều nhưng mà trong VD trên ý của mình muốn là khi giá trị ở cột B thay đổi theo Hàm if, mà ra giá trị "a" thì giá trị ngày mới hiện ra, còn không thì không hiển thị.Mong bạn chỉ giúp!!!1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Clls As Range
If Not Intersect(Target, [C2:C5000]) Is Nothing Then
For Each Clls In Target.Offset(0, -1)
If Clls = "a" Then
Cells(Clls.Row, 1) = Now
End If
Next Clls
End If
End Sub
Cảm ơn yeudoi nhiều, nhưng cho mình hỏi thêm là giả sử :Nếu bạn không muốn theo giá trị cột c thì đổi lại như thế này
Cột B của bạn là công thức chứ có phải là dử liệu do bạn nhập đâu chứ --> Vì thế bạn muốn điền ngày mổi khi cột B có giá trị = "a" thì phải xem cột B này dùng các tham chiếu nào trong công thức, từ đó xác định Target cho phù hợpCảm ơn yeudoi nhiều, nhưng cho mình hỏi thêm là giả sử :
1. Ở file đính kèm của mình thì khi giá trị ở cột c = 1 thì giá trị cột b = a, bây giờ nếu giá trị ở cột c, cột d, cột e cùng = 1 thì giá trị ở cột b mới = a, vậy code phải viết lại như thế nào?.
2. Vẫn file như trên bạn giúp mình cách nào để làm trong trương hợp chỉ muốn giá trị ngày hiện ra phụ thuộc vào giá trị cột B không?.(trong trường hợp giá trị cột b =a khi phụ thuộc vào giá trị của nhiều cột.)
Cảm ơn bạn!.Bạn có thể chỉ giúp mình rõ hơn qua file này được không?.Cột B của bạn là công thức chứ có phải là dử liệu do bạn nhập đâu chứ --> Vì thế bạn muốn điền ngày mổi khi cột B có giá trị = "a" thì phải xem cột B này dùng các tham chiếu nào trong công thức, từ đó xác định Target cho phù hợp
Công thức tại cột B liên quan đến cột C, D và E ---> Vậy ta sửa lại code như sau:Cảm ơn bạn!.Bạn có thể chỉ giúp mình rõ hơn qua file này được không?.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Clls As Range
If Not Intersect(Target, [C2:E5000]) Is Nothing Then
For Each Clls In Target
If Cells(Clls.Row, 2) = "a" Then
Cells(Clls.Row, 1) = Now
End If
Next Clls
End If
End Sub