Cần giúp đỡ về Cách hiển thị Ngày giờ tự động!!!

Liên hệ QC

interit

Thành viên mới
Tham gia
28/4/09
Bài viết
25
Được thích
0
Khi mình đánh 1 giá trị bất kì vào 1 ô, thì ô bên cạnh tự động hiển thị ngày giờ hiện tại và giá trị này được lưu lại và không thay đổi.Sang ngày tiếp theo với những dữ liệu được nhập mới sẽ hiển thị ngày tiếp theo.
 
Mình làm được vài ý của bạn nhưng có những trường hợp không thể thực hiện theo yêu cầu được. Như phân số hay thời gian. Bạn có thể xem rõ hơn trong file này.
Chúc vui.
 

File đính kèm

  • AuDate.xls
    24.5 KB · Đọc: 92
Bạn xem thử đúng ý chưa
 

File đính kèm

  • Ngay.xls
    22 KB · Đọc: 91
Ai 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
!$@!!
Đương nhiên là vậy rồi
- Khi bạn gõ gì đó vào 1 cell, lập tức code chạy và nối chuối bạn vừa gõ với NOW
- Khi code chạy xong lại có sự thay đổi trên cell nên code lại chạy
- Quá trình này cứ thế mà tiếp diến
===> Để thay đổi gì đó trực tiếp ở cell vừa gõ (Target) bắt buộc phải dùng thêm đoạn code Application.EnableEvents = False ở đầu code và Application.EnableEvents = True ở cuối code... Mục đích để "chặn đứng" quá trình lập lại như tôi vừa nói ở trên
Vậy code cho bạn sẽ là:
PHP:
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
 
Cám ơn bạn các bạn nhiều

Hai 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
Bạn xem thử đúng ý chưa
 
Hai 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
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ạn
 
Nhờ các bạn chỉ giúp!!!

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.
 

File đính kèm

  • Ngay.xls
    24 KB · Đọc: 22
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.
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)
PHP:
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
Code này cho phép bạn copy/paste thoải mái
 

File đính kèm

  • Ngay.xls
    22 KB · Đọc: 45
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)
PHP:
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
Code này cho phép bạn copy/paste thoải mái
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
 
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

Nếu bạn không muốn theo giá trị cột c thì đổi lại như thế này
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
 
Nếu bạn không muốn theo giá trị cột c thì đổi lại như thế này
Cả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 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ộ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ộ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ảm ơn bạn!.Bạn có thể chỉ giúp mình rõ hơn qua file này được không?.
 

File đính kèm

  • Ngay.xls
    22.5 KB · Đọc: 21
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ô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:
PHP:
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
 
Cám ơn ndu96081631 nhiều nhé!!!
 
Web KT
Back
Top Bottom