Note: The other languages of the website are Google-translated. Back to English

Làm thế nào để ghi ngày và giờ tự động khi ô thay đổi?

Chúng tôi dễ dàng chèn ngày và giờ tĩnh theo cách thủ công hoặc chèn ngày động thay đổi theo giờ hệ thống bằng một công thức. Nếu bạn muốn tự động ghi lại ngày và giờ khi bạn thay đổi hoặc nhập giá trị, vấn đề này có thể hơi khác để giải quyết. Tuy nhiên, trong bài viết này, bạn có thể giải quyết công việc này bằng các bước sau.

Ghi lại ngày và giờ tự động khi ô thay đổi với mã VBA

Tab Office Cho phép Chỉnh sửa và Duyệt theo Tab trong Office, và Giúp Công việc của Bạn Dễ dàng hơn Nhiều ...
Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn
  • Tái sử dụng mọi thứ: Thêm các công thức, biểu đồ và bất kỳ thứ gì khác được sử dụng nhiều nhất hoặc phức tạp vào mục yêu thích của bạn và nhanh chóng sử dụng lại chúng trong tương lai.
  • Hơn 20 tính năng văn bản: Trích xuất số từ chuỗi văn bản; Trích xuất hoặc loại bỏ một phần nội dung; Chuyển đổi số và tiền tệ sang từ tiếng Anh.
  • Công cụ hợp nhất: Nhiều Workbook và Sheets thành một; Hợp nhất nhiều ô / hàng / cột mà không làm mất dữ liệu; Hợp nhất các hàng và tổng trùng lặp.
  • Công cụ tách: Chia Dữ liệu thành Nhiều Trang tính Dựa trên Giá trị; Một sổ làm việc cho nhiều tệp Excel, PDF hoặc CSV; Một cột đến nhiều cột.
  • Dán bỏ qua Hàng ẩn / được lọc; Đếm và tổng theo Màu nền; Gửi hàng loạt email được cá nhân hóa cho nhiều người nhận.
  • Bộ lọc siêu: Tạo lược đồ lọc nâng cao và áp dụng cho bất kỳ trang tính nào; Sắp xếp theo tuần, ngày, tần suất và hơn thế nữa; Lọc bằng cách in đậm, công thức, chú thích ...
  • Hơn 300 tính năng mạnh mẽ; Hoạt động với Office 2007-2021 và 365; Hỗ trợ tất cả các ngôn ngữ; Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn.

mũi tên màu xanh bong bóng bên phải Ghi lại ngày và giờ tự động khi ô thay đổi với mã VBA

Ví dụ: tôi có một phạm vi giá trị và bây giờ, khi tôi thay đổi hoặc nhập giá trị mới vào Cột B, tôi muốn nó sẽ tự động ghi lại ngày và giờ hiện tại trong Cột C như ảnh chụp màn hình sau:

doc-update-time-value-changes-1

Bạn có thể hoàn thành tác vụ này với mã VBA sau. Vui lòng làm như sau:

1. Giữ ALT + F11 phím để mở Cửa sổ Microsoft Visual Basic for Applications.

2. Sau đó, chọn trang tính đã sử dụng của bạn từ bên trái Trình khám phá dự án, nhấp đúp vào nó để mở Mô-đun, sau đó sao chép và dán mã VBA sau vào Mô-đun trống:

Mã VBA: Ghi ngày và giờ tự động khi ô thay đổi

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

doc-update-time-value-changes-1

3. Sau đó lưu và đóng đoạn mã này để quay lại trang tính, lúc này khi bạn thay đổi giá trị ô hoặc nhập dữ liệu mới vào Cột B, ngày và giờ sẽ được tự động ghi lại trong Cột C.

Ghi chú:

1. Trong đoạn mã trên, bạn có thể sửa đổi “B: B”Vào bất kỳ cột nào khác mà bạn muốn thay đổi giá trị ô trong tập lệnh này: Đặt WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Target).

2. Với cái này xOffsetCột = 1 script, bạn có thể chèn và cập nhật ngày và giờ vào cột đầu tiên bên cạnh cột giá trị thay đổi của bạn, bạn có thể thay đổi số 1 thành các số khác, chẳng hạn như 2,3,4,5… có nghĩa là ngày sẽ được chèn cột thứ hai, thứ ba, thứ tư hoặc thứ năm bên cạnh cột giá trị đã thay đổi của bạn.

3. Khi bạn xóa một giá trị trong cột đã thay đổi, ngày và giờ cũng sẽ bị xóa.


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (108)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm thế nào để bạn viết mã để thực hiện điều này nhiều lần trên một trang Ví dụ: văn bản trong cột B, ngày tháng trong C và văn bản trong D, ngày tháng trong E?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
[quote] Làm thế nào để bạn viết mã để thực hiện điều này nhiều lần trên một trang Ví dụ: văn bản trong cột B, ngày tháng trong C và văn bản trong D, ngày tháng trong E?Bởi Hilary[/ quote] Tôi biết điều này đã cũ nhưng cách lâu nhưng vẫn dễ dàng, là sao chép các khai báo biến và tạo các biến mới (tức là WorkRng1 và Rng1). Bạn cũng phải sao chép câu lệnh "if" và thay đổi các biến thành tên biến mới.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
[quote] Làm thế nào để bạn viết mã để thực hiện điều này nhiều lần trên một trang Ví dụ: văn bản trong cột B, ngày tháng trong C và văn bản trong D, ngày tháng trong E?Bởi Hilary[/ quote] Đây là mã: Private Sub Worksheet_Change (ByVal Target As Range) 'Cập nhật 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer' Thay đổi Phạm vi để chọn cột bạn đang cập nhật, tức là ("A: A ") hoặc (" B: B ") Đặt WorkRng = Intersect (Application.ActiveSheet.Range (" E: E "), Target) xOffsetColumn = 1 'Đối với dấu lần thứ hai' Tạo tên biến mới, chẳng hạn như WorkRng1, Rng1, v.v. Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Set WorkRng1 = Intersect (Application.ActiveSheet.Range ("G: G"), Target) xOffsetColumn1 = 1 'Đối với dấu lần đầu tiên If Not WorkRng Is Nothing Sau đó Application.EnableEvents = Sai cho mỗi Rng Trong WorkRng Nếu không phải VBA.IsEmpty (Rng.Value) Thì Rng.Offset (0, xOffsetColumn) .Value = Now Rng.Offset (0, xOffsetColumn) .NumberFormat = "mm / dd / yyyy "Else Rng.Offset (0, xOffsetColumn) .ClearContents End If Next Application.EnableEvents = True End If 'Đối với dấu lần thứ hai If Not WorkRng1 Is Nothing then Application.EnableEve nts = Sai cho mỗi Rng1 Trong WorkRng1 Nếu không phải VBA.IsEmpty (Rng1.Value) Thì Rng1.Offset (0, xOffsetColumn1) .Value = Now Rng1.Offset (0, xOffsetColumn1) .NumberFormat = "mm / dd / yyyy" Else Rng1.Offset (0, xOffsetColumn1) .ClearContents End If Next Application.EnableEvents = True End If End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều gì xảy ra nếu tôi muốn thực hiện việc này cho một dải cột?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
thay đổi phạm vi (B: B) như thế này: (10:20) cho cột 10 thành 20 (D5: D40) cho cột 5 thành 40 trên hàng D Hy vọng nó sẽ giúp.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin lỗi, tôi đã hoán đổi cột với các hàng, nhưng nó vẫn hoạt động. (D: P) Từ cột D đến P (D5: D5) từ cột D đến P trên hàng 5
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
khi tôi lưu nó hoạt động nhưng khi tôi mở lại thì không hoạt động
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
[quote] khi tôi lưu nó hoạt động nhưng khi tôi mở lại thì không hoạt độngBởi Aarif[/ quote] Cùng một vấn đề với Aarif ... Nó đã xử lý được nửa giờ trước, và bây giờ thì không ... cũng vậy, tôi chỉ muốn giờ chứ không phải ngày VÀ giờ, vì vậy tôi đã chỉnh sửa ".NumberFormat" thành chỉ hh: mm: ss, đã lưu, đã kiểm tra rồi ... không khác gì ... vẫn ghi ngày giờ ...? mở VB một lần nữa, và gõ vào một số văn bản được phân tách, lưu lại, vẫn không ổn, sau đó tôi làm lại lần thứ ba, và định dạng đã làm như nó đã được nói và đột nhiên tôi nhận được thời gian. RẤT kỳ lạ, từ lâu tôi đã nghĩ rằng Excell bị ma ám, kể từ lần đầu tiên tôi sử dụng hàm SEARCH, tìm kiếm một giá trị trong một ô mà tôi có thể nhìn thấy tận mắt, nhưng Excel khẳng định nó không tồn tại !? Bất kỳ chuyên gia Excel hoặc chuyên gia trừ tà nào có thể giúp đỡ? tại sao nó lại bỏ qua VB của tôi và KHÔNG ghi dấu thời gian như nó đã làm ...? cảm ơn bạn: cry:
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
[quote] Làm thế nào để bạn viết mã để thực hiện điều này nhiều lần trên một trang Ví dụ: văn bản trong cột B, ngày tháng trong C và văn bản trong D, ngày tháng trong E?Bởi Hilary[/ quote] câu trả lời cho câu quote là gì
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều gì sẽ xảy ra nếu tôi muốn tính năng này chạy nhưng không ở trên trang tính đang hoạt động, vì vậy hãy chạy ở chế độ nền và cập nhật bất cứ khi nào có mục nhập vào cột B?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều gì sẽ xảy ra nếu cột đang ảnh hưởng đến cột dấu thời gian là tổng của nhiều cột khác? Ví dụ ... Cột H là = Tổng (E + F + G) và tôi muốn một dấu thời gian được thực hiện trong Cột I mỗi khi Cột H được thay đổi hoặc về bản chất khi các Cột E, F hoặc G đã được thay đổi . Bạn có thể vui lòng giúp đỡ không ??
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi cần giúp đỡ xin vui lòng! Tôi đang cố gắng thực hiện dấu thời gian mỗi khi một trong ba ô được thay đổi. Lý tưởng nhất là tôi muốn làm điều này khi tổng các ô này đã được thay đổi. Ví dụ. Các ô E, F, G sẽ được thay đổi và ô H sẽ là SUM của ba ô đó. Khi Ô H đã được thay đổi, tôi muốn Ô I được đóng dấu thời gian. Điều này có khả thi không ?? Cảm ơn nhiều
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đang cố gắng chạy đoạn mã trên; tuy nhiên, ô thay đổi mà tôi muốn ghi lại được liên kết với một hộp kiểm và do đó là "TRUE" hoặc "FALSE". Vì một số lý do, mã sẽ không hoạt động khi ô thay đổi. Tuy nhiên, nếu tôi chèn câu nói "có" theo cách thủ công, thì mã sẽ hoạt động tốt. Bất kỳ giải pháp nào cho vấn đề này mà bạn biết? Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có thể làm điều này đối với dữ liệu lịch sử không? Nếu tôi đã thực hiện các thay đổi đối với một ô ngày hôm qua hoặc một tháng trước, tôi có thể sử dụng mẫu mã này để truy xuất những ngày đó không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có cách nào để đóng dấu thời gian dựa trên một thay đổi cụ thể không? Ví dụ: tôi có một bảng tính với một cột tùy chọn thả xuống bao gồm để trống, "Ok" và "Hành động". Khi nhiệm vụ được hoàn thành, trình đơn thả xuống được sử dụng theo cách thủ công để chọn 'Ok'. Tôi muốn con dấu ngày tháng được gắn với thời điểm chọn "Ok", nhưng không phải khi "Hành động" được chọn. Tùy chọn 'Hành động' trong trình đơn thả xuống được sử dụng khi một nhiệm vụ đã quá hạn, nhưng tôi thực sự chỉ đang cố gắng theo dõi khi nào một mục được hoàn thành. Có cách nào để thực hiện điều này với đoạn mã trên không? Thanks!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bạn có thể giải quyết vấn đề này không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
đó là một câu hỏi rất hay. bạn đã sắp xếp nó ra chưa, bạn có thể vui lòng chia sẻ cách?
cảm ơn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi có thể thay đổi phạm vi thành ("A: Q") nhưng tôi cần ngày và giờ chuyển sang "S" nếu dữ liệu trong bất kỳ ô AQ nào bị thay đổi / xóa. Tôi đã thách thức VBA. Bất kỳ trợ giúp nào cũng được đánh giá rất cao!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin lỗi, tôi chỉ đăng một câu hỏi và tôi cần câu trả lời cho điều này ... Tôi chắc đã bỏ lỡ bình luận này ... hy vọng ai đó có thể giúp đỡ!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm cách nào để thay đổi nó để chỉ ngày ô liền kề thay đổi?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm cách nào để lấy dấu thời gian để ghi vào một ô cụ thể, thay vì ô bên cạnh ô đã được thay đổi. Tôi đang cố gắng đánh dấu thời gian cho một hàng ô khi thay đổi xảy ra trong bất kỳ ô nào trong số đó, tôi muốn dấu thời gian được ghi lại trong một ô cụ thể ... bất cứ ai có thể giúp việc này? Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Xin chân thành cảm ơn vì điều này rất tốt cho khả năng kiểm toán của WB. Có cách nào thay đổi điều này để ghi ngày / giờ ở đâu đó trên WB bất cứ khi nào nhận xét được thêm vào hoặc sửa đổi không? Tôi biết đây là một câu hỏi chung, nhưng tôi không chắc liệu nó có thể xảy ra hay không (rất tiếc đối với MS 2010, thuộc tính .comment không giữ thuộc tính ngày tháng để xác định thời điểm nó được nhập. Mike
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm cách nào để tôi có thể cấu hình để đọc cột A: A và chỉ cho dấu thời gian trong B: B khi nhập một số 14 chữ số vào đó?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi cần một số trợ giúp về mã hóa VBA. Tôi đang tạo một bảng phân loại với các trường hợp sẽ được chỉ định cho mọi người và có trạng thái trường hợp. Người được giao sẽ ở Col H và tôi cần có dấu ngày tháng ở Col I khi ô ở Col H được cập nhật hoặc thay đổi tên. Tương tự, tôi sẽ có trạng thái trường hợp trong Cột J và sẽ cần một dấu ngày tháng trong Cột K khi một trạng thái được nhập hoặc thay đổi. Ngoài ra khi không có tên hoặc trạng thái không phải của người được chuyển nhượng, tôi cần dấu ngày tháng ở Cột I và K để trống. Bất kỳ trợ giúp sẽ được đánh giá cao. Thanks
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã tìm thấy mã này ở nơi khác và đã sửa đổi nó để sử dụng. Nếu được thực hiện đúng cách, bạn không cần phải lo lắng về việc nhập một hàm vào một ô hoặc tệp thay đổi ngày thành ngày của ngày đó mỗi khi nó được mở. - mở Excel - nhấn "Alt + F11" - Nhấp đúp vào trang tính mà bạn muốn áp dụng thay đổi (được liệt kê ở bên trái) - sao chép / dán mã bên dưới - điều chỉnh đầu vào Phạm vi (_: _) cho tương ứng vào cột bạn sẽ cập nhật - điều chỉnh đầu vào Offset (0, _) để tương ứng với cột mà bạn muốn ngày được hiển thị (trong phiên bản bên dưới, tôi đang thực hiện cập nhật cho cột D và tôi muốn ngày được hiển thị trong cột F, do đó, mục nhập đầu vào là "2" cho 2 cột từ cột D) - nhấn lưu - lặp lại các bước ở trên nếu có các trang tính khác trong sổ làm việc của bạn cần cùng mã - bạn có thể phải thay đổi định dạng số của cột hiển thị ngày thành "Chung" và tăng chiều rộng của cột nếu nó đang hiển thị "####" sau khi bạn thực hiện một mục nhập cập nhật Sao chép / Dán Mã bên dưới: ____________________________________________________________ Private Sub Worksheet_Change (ByVal Target As Range) If Intersect (Target, Range (" D: D ")) Không có gì thì thoát khỏi mục tiêu phụ.Offset (0, 2) = Ngày kết thúc phụ ___ _________________________________________________________ Chúc may mắn...
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
mã này sẽ hiển thị ngày khi nhấp vào nó xuất hiện, có thể chỉ hiển thị ngày khi nội dung trong ô được thay đổi, nếu chỉ được nhấp và không có gì thay đổi, thì ngày không hiển thị hoặc ngày đã nhập trước đó vẫn giữ nguyên?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Khi tôi ghi trong macro một công thức vloocup, vậy làm cách nào để tôi có thể thực hiện ngày đó tự động thay đổi thành 1 ngày. Giống như ngày 21/07/2017 thì ngày hôm sau nó thay đổi thành 22/07/2017. Tự động chia sẻ nếu có bất kỳ mã vba nào.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
thay thế dòng này
Rng.Offset (0, xOffsetColumn) .Value = Now

đến
Rng.Offset (0, xOffsetColumn) .Value = Now + 1
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn rất nhiều cho mã! Chính xác những gì tôi đang tìm kiếm!!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn sự giúp đỡ của bạn :-)
Không có bình luận nào được đăng ở đây
Tải thêm
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL