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

單元格更改時如何自動記錄日期和時間?

對於我們來說,手動插入靜態日期和時間或通過公式插入隨系統時間變化的動態日期很容易。 如果要在更改或輸入值時自動記錄日期和時間,此問題可能會有所不同。 但是,在本文中,您可以通過以下步驟解決此任務。

使用VBA代碼更改單元格時自動記錄日期和時間

Office選項卡在Office中啟用選項卡式編輯和瀏覽,並使您的工作更加輕鬆...
Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%
  • 重用任何東西: 將最常用或最複雜的公式,圖表等添加到您的收藏夾中,並在將來快速重用它們。
  • 超過20種文字功能: 從文本字符串中提取數字; 提取或刪除部分文字; 將數字和貨幣轉換為英文單詞。
  • 合併工具:將多個工作簿和工作表合二為一; 合併多個單元格/行/列,而不會丟失數據; 合併重複的行和總和。
  • 分割工具:根據價值將數據分割成多個工作表; 一本工作簿可轉換為多個Excel,PDF或CSV文件; 一列到多列。
  • 跳過粘貼 隱藏/過濾的行; 計數與求和 按背景色; 向多個收件人批量發送個性化電子郵件。
  • 超級過濾器: 創建高級過濾方案並應用於任何工作表; 分類 按星期,日期,頻率等 篩選 用粗體,公式,註釋...
  • 超過300個強大的功能; 適用於 Office 2007-2021 和 365; 支持所有語言; 在您的企業或組織中輕鬆部署。

箭頭藍色右氣泡 使用VBA代碼更改單元格時自動記錄日期和時間

例如,我有一個值範圍,現在,當我在B列中更改或鍵入新值時,我希望在那裡將在C列中自動記錄當前日期和時間,如以下屏幕截圖所示:

文檔更新時間值更改 1

您可以使用以下VBA代碼完成此任務。 請這樣做:

1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications窗口。

2。 然後從左側選擇您使用的工作表 項目瀏覽器,雙擊以打開 模塊,然後將以下VBA代碼複製並粘貼到空白模塊中:

VBA代碼:單元格更改時自動記錄日期和時間

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

文檔更新時間值更改 1

3. 然後保存並關閉此代碼以返回到工作表,現在,當您更改單元格值或在B列中鍵入新數據時,日期和時間將自動記錄在C列中。

筆記:

1.在以上代碼中,您可以修改“B:B”更改為您要在此腳本中更改單元格值的任何其他列: 設置WorkRng = Intersect(Application.ActiveSheet.Range(“ B:B”),目標).

2.與此 xOffsetColumn = 1 腳本,您可以將日期和時間插入並更新到更改值列旁邊的第一列,可以將數字1更改為其他數字,例如2,3,4,5…,這意味著日期將被插入第二,第三,第四或第五列,以及更改後的值列。

3.當您在更改的列中刪除一個值時,日期和時間也將被刪除。


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (108)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
您如何編寫代碼以在一頁上多次執行此操作 例如。 B 列中的文本,C 中的日期和 D 中的文本,E 中的日期?
網站主持人對此評論進行了最小化
[quote]你如何編寫代碼在一頁上多次執行此操作 例如。 B 列中的文本,C 中的日期和 D 中的文本,E 中的日期?希拉里[/quote] 我知道這是舊的,但是漫長而簡單的方法是複制變量聲明並創建新變量(即 WorkRng1 和 Rng1)。 您還必須複製“if”語句並將變量更改為新的變量名稱。
網站主持人對此評論進行了最小化
[quote]你如何編寫代碼在一頁上多次執行此操作 例如。 B 列中的文本,C 中的日期和 D 中的文本,E 中的日期?希拉里[/quote] 這裡是代碼: Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer '更改範圍以選擇要更新的列,即(“A: A") or ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 '為第二個時間戳'新建變量名,如WorkRng1, Rng1 等 Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Set WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 '對於第一個時間戳如果不是 WorkRng Is Nothing然後 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 = "mm/dd/ yyyy" Else Rng.Offset(0, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If '對於第二個時間戳 If Not WorkRng1 is Nothing Then Application.EnableEve nts = False For Each Rng1 In WorkRng1 If Not VBA.IsEmpty(Rng1.Value) Then 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
網站主持人對此評論進行了最小化
如果我想對一系列列執行此操作怎麼辦?
網站主持人對此評論進行了最小化
像這樣更改範圍 (B:B): (10:20) 用於 D 行的第 10 到 20 列 (D5:D40) 用於 D 行的第 5 到 40 列 希望它有所幫助。
網站主持人對此評論進行了最小化
抱歉,我用行交換列,但它仍然有效。 (D:P) 從 D 列到 P (D5:D5) 從 D 列到第 5 行的 P
網站主持人對此評論進行了最小化
當我保存它工作但當我重新打開時不起作用
網站主持人對此評論進行了最小化
[quote]當我保存它時,當我重新打開時不起作用由阿里夫[/quote] 和 Aarif 一樣的問題......半小時前它工作了,現在它沒有......而且,我只想要時間而不是日期和時間,所以我將“.NumberFormat”編輯為只是hh:mm:ss,保存,測試它......沒有什麼不同......仍然輸入日期和時間......? 再次打開VB,輸入一些帶分隔符的文本,再次保存,仍然不行,然後我又做了第三次,格式按照它說的那樣做,突然我得到了時間。 很奇怪我一直以為 Excel 鬧鬼了,自從我第一次使用 SEARCH 函數,在單元格中搜索一個我可以親眼看到的值,但 Excel 堅持它不存在!? 任何可以提供幫助的 Excel 大師或驅魔師? 為什麼它會忽略我的 VB 而不是像它那樣加時間戳...? 謝謝你:哭:
網站主持人對此評論進行了最小化
[quote]你如何編寫代碼在一頁上多次執行此操作 例如。 B 列中的文本,C 中的日期和 D 中的文本,E 中的日期?希拉里[/quote] 引用的答案是什麼
網站主持人對此評論進行了最小化
如果我希望它運行但不在活動工作表上,那麼在後台運行並在 B 列中有條目時更新怎麼辦?
網站主持人對此評論進行了最小化
如果影響時間戳列的列是多個其他列的總和怎麼辦? 例如... H 列是 =Sum(E+F+G) 並且我希望在每次更改 H 列時在 I 列中完成時間戳,或者本質上當 E、F 或 G 列已更改時. 你能幫忙嗎??
網站主持人對此評論進行了最小化
我需要幫助! 每次更改三個單元格之一時,我都試圖完成一個時間戳。 理想情況下,當這些單元格的總和已更改時,我希望這樣做。 例如。 單元格 E、F、G 將被更改,單元格 H 將是這三個單元格的總和。 當單元格 H 已更改時,我希望為單元格 I 加上時間戳。 這可能嗎?? 太感謝了
網站主持人對此評論進行了最小化
我正在嘗試運行上面的代碼; 但是,我要記錄的更改的單元格鏈接到一個複選框,因此要么是“TRUE”,要么是“FALSE”。 由於某種原因,當單元格更改時,代碼將不起作用。 但是,如果我手動插入說“是”,則代碼可以正常工作。 您知道此問題的任何解決方法嗎? 謝謝!
網站主持人對此評論進行了最小化
是否可以對歷史數據執行此操作? 如果我昨天或一個月前對單元格進行了更改,我可以使用此代碼的一種形式來檢索這些日期嗎?
網站主持人對此評論進行了最小化
有沒有辦法根據特定的變化來標記時間戳? 例如,我有一個電子表格,其中有一列下拉選項,包括空白、“Ok”和“Act”。 任務完成後,手動使用下拉菜單選擇“確定”。 我希望在選擇“Ok”時綁定日期戳,而不是在選擇“Act”時綁定。 當任務過期時使用下拉菜單中的“Act”選項,但我真的只是想跟踪項目何時完成。 有沒有辦法用上面的代碼完成這個? 謝謝!
網站主持人對此評論進行了最小化
你能解決這個問題嗎?
網站主持人對此評論進行了最小化
這是一個很好的問題。 你整理好了嗎,可以分享一下方法嗎?
謝謝
網站主持人對此評論進行了最小化
我可以將範圍更改為(“A:Q”),但如果任何 AQ 單元格中的數據被更改/刪除,我需要日期和時間進入“S”。 我是 VBA 挑戰。 任何幫助是極大的讚賞!
網站主持人對此評論進行了最小化
抱歉,我剛剛發布了一個問題,我需要這個問題的答案……我一定錯過了這條評論……希望有人能提供幫助!
網站主持人對此評論進行了最小化
如何更改它,以便只有相鄰的單元格日期更改?
網站主持人對此評論進行了最小化
如何獲取時間戳以記錄在特定單元格中,而不是更改後的單元格旁邊的單元格。 我試圖在任何這些單元格中發生更改時為一排單元格加上時間戳,我希望時間戳記錄在一個特定的單元格中......有人可以幫忙嗎? 謝謝!
網站主持人對此評論進行了最小化
嗨,非常感謝您,因為它對 WB 的可審計性非常有用。 有沒有辦法改變它,以便在添加或修改評論時將日期/時間記錄在 WB 的某處? 我知道這是一個普遍的問題,但我不確定它是否可能(不幸的是,對於 MS 2010,.comment 屬性不包含日期屬性來識別它何時輸入。邁克
網站主持人對此評論進行了最小化
我如何配置讀取 A:A 列並僅在輸入 14 位數字時在 B:B 中給出時間戳?
網站主持人對此評論進行了最小化
嗨,我需要一些 VBA 編碼幫助。 我正在創建一個包含案例的電子表格,這些案例將分配給人員並具有案例狀態。 受讓人將在 Col H 中,當 Col H 中的單元格更新或更改名稱時,我需要在 Col I 中添加日期戳。 同樣,我將在 Col J 中獲得案例狀態,並且在輸入或更改狀態時需要在 Col K 中添加日期戳。 同樣,當沒有受讓人姓名或狀態時,我需要 Col I 和 K 中的日期戳為空白。 任何幫助,將不勝感激。 謝謝
網站主持人對此評論進行了最小化
我在別處找到了這段代碼並對其進行了修改以供我使用。 如果操作正確,您無需擔心在單元格中輸入函數或文件每次打開時都會將日期更改為當天的日期。 - 打開 Excel - 按“Alt+F11” - 雙擊要應用更改的工作表(在左側列出) - 複製/粘貼下面的代碼 - 調整 Range(_:_) 輸入以對應到您將更新的列 - 調整 Offset(0,_) 輸入以對應於您希望顯示日期的列(在下面的版本中,我正在對 D 列進行更新,我希望在 F 列中顯示日期,因此,從 D 列開始的 2 列輸入“2”條目 - 點擊保存 - 如果您的工作簿中有其他工作表需要相同的代碼,請重複上述步驟 - 您可能必須更改顯示列的數字格式將日期更改為“常規”,如果在您更新條目後顯示“####”,則增加列的寬度 複製/粘貼以下代碼: ____________________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(" D:D")) 什麼都沒有然後退出 Sub Target.Offset(0, 2) = Date End Sub ___ _________________________________________________________ 祝你好運...
網站主持人對此評論進行了最小化
此代碼將在單擊時顯示日期,是否可以僅在單元格中的內容更改時顯示日期,如果僅單擊並且沒有任何更改,則日期不顯示或先前輸入的日期保留?
網站主持人對此評論進行了最小化
當我在宏中記錄一個 vloocup 公式時,我如何才能將該日期自動更改為 1 天,就像它的 21/07/2017 然後第二天更改為 22/07/2017 如果有任何 vba 代碼,請自動分享。
網站主持人對此評論進行了最小化
替換這一行
Rng.Offset(0, xOffsetColumn).Value = 現在


Rng.Offset(0, xOffsetColumn).Value = Now+1
網站主持人對此評論進行了最小化
非常感謝您的代碼! 正是我想要的!
網站主持人對此評論進行了最小化
感謝您的幫助 :-)
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護