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

如何在Excel中雙擊自動在單元格中添加/輸入當前日期/時間?

如果需要在工作表中頻繁插入當前日期或日期時間,可以嘗試本文中的方法。 本文將幫助您通過雙擊自動在指定的範圍單元格中添加或輸入當前日期或日期齒。

雙擊以使用VBA代碼自動添加/輸入當前日期或日期時間


雙擊以使用VBA代碼自動添加/輸入當前日期或日期時間

您可以運行下面的VBA代碼以雙擊自動在單元格中添加當前日期或日期時間。 請執行以下操作。

1.右鍵單擊要在指定的單元格中插入當前日期的工作表選項卡,然後選擇 查看代碼 從右鍵單擊菜單中。

2。 在裡面 Microsoft Visual Basic應用程序 窗口,將下面的VBA代碼複製並粘貼到“代碼”窗口中。

VBA代碼:雙擊以將當前日期添加到單元格中

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A1:B10")) Is Nothing Then
        Cancel = True
        Target.Formula = Date
    End If
End Sub

筆記:

1.在代碼中,A1:B10是您要添加當前日期的範圍。
2.如果您需要在單元格中添加當前日期時間,請替換 日期現在() 在代碼中。 您可以根據需要更改它們。

3。 按 其他 + Q 同時關閉按鍵 Microsoft Visual Basic for Applications 窗口並返回到工作表。

從現在開始,雙擊指定範圍A1:B10中的任何單元格。 當前日期或日期時間將自動輸入。


相關文章:


最佳辦公效率工具

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底部
按評論排序
留言 (28)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
我們如何擴展它以添加更多單元格範圍? 我在代碼中添加了一個這些額外的單元格:(Target, Range("C10:C19", "D10:D19", "E10:E19")) 但是它給了我一個編譯錯誤,說“參數數量錯誤或無效的屬性分配”,然後突出顯示您提供的第一行代碼“Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)”請幫助我。
網站主持人對此評論進行了最小化
Joel,不知道您是否還在尋找解決方案,但您需要更改代碼:

從:(目標,範圍(“C10:C19”,“D10:D19”,“E10:E19”))
到:(目標,範圍(“C10:C19,D10:D19,E10:E19”))

這將為您完成。
網站主持人對此評論進行了最小化
你好尼克
我想從你那裡得到一些關於這個問題的建議......
我有一個文件,我稱之為“生產力表”......在時間似乎變得不可改變之後......就像被鎖定的東西。)
我很感謝你的時間和thanx提前
匈牙利阿提拉
exyzee@gmail.com
網站主持人對此評論進行了最小化
親愛的阿提拉,
請嘗試以下屏幕截圖,以在單擊時將實際時間插入到特定範圍內的單元格中。
(無法實現自動鎖定單元格功能,抱歉)

私人子工作表_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A1:B10")) 什麼都不是
取消=真
Target.Formula = 日期
如果結束
END SUB
網站主持人對此評論進行了最小化
該代碼確實有效...謝謝...我添加了另一個代碼以在輸入數據後保護單元格。 現在的問題是,一旦我輸入數據並且單元格受到保護,並且如果我錯誤地雙擊受保護的單元格,那麼整個工作表的上述代碼都會出錯。 然後它不起作用。 我必須取消保護工作表才能使代碼生效。 有什麼解決辦法嗎?

使用的保護代碼如下:

Private Sub Worksheet_Change(ByVal Target As Range)
將 xRg 調暗為範圍
在錯誤恢復下一頁
設置 xRg = Intersect(Range("A1:a1000,b1:b1000,G1:G1000"), 目標)
如果 xRg 什麼都不是,則退出 Sub
Target.Worksheet.Unprotect 密碼:="123"
xRg.Locked = 真
Target.Worksheet.Protect 密碼:="123"
END SUB
網站主持人對此評論進行了最小化
親愛的保羅,
我試試你提供的代碼。 一旦我將數據輸入任何一個指定的受保護單元格,整個工作表將立即受到保護。
此外,當雙擊受保護的單元格時,我的代碼沒有任何變化。
你能解釋一下你到底想用代碼做什麼嗎?
網站主持人對此評論進行了最小化
對不起,我明白你的意思。 (錯過上面的代碼)
網站主持人對此評論進行了最小化
創建的雙擊進入代碼為:


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("A1:a1000")) 什麼都沒有
取消=真
Target.Formula = 日期
如果結束

If Not Intersect(Target, Range("b1:b1000")) 什麼都不是
取消=真
Target.Formula = 時間
如果結束

If Not Intersect(Target, Range("g1:g1000")) 什麼都不是
取消=真
Target.Formula = 時間
如果結束
END SUB
網站主持人對此評論進行了最小化
親愛的保羅,
請嘗試以下 VBA 代碼。

Private Sub Worksheet_Change(ByVal Target As Range)
將 xRg 調暗為範圍
在錯誤恢復下一頁
設置 xRg = Intersect(Range("A1:a1000,b1:b1000,G1:G1000"), 目標)
如果 xRg 什麼都不是,則退出 Sub
Target.Worksheet.Unprotect 密碼:="123"
xRg.Locked = 真
Target.Worksheet.Protect 密碼:="123"
END SUB

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
Application.EnableEvents = False
ActiveSheet.Unprotect 密碼:="123"
If Not Intersect(Target, Range("A1:a1000")) 什麼都沒有
取消=真
Target.Formula = 日期
如果結束
If Not Intersect(Target, Range("b1:b1000")) 什麼都不是
取消=真
Target.Formula = 時間
如果結束
If Not Intersect(Target, Range("g1:g1000")) 什麼都不是
取消=真
Target.Formula = 時間
如果結束
ActiveSheet.Protect 密碼:="123"
Application.EnableEvents = True
END SUB
網站主持人對此評論進行了最小化
我複制並粘貼了更新範圍的代碼,但它不起作用:-(


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("B4:B100")) 什麼都不是
取消=真
Target.Formula = 現在()
如果結束
END SUB
網站主持人對此評論進行了最小化
美好的一天,
該代碼在我的情況下運行良好。 你能告訴我你的Office版本嗎?
網站主持人對此評論進行了最小化
您好,您提供的代碼效果很好。 我只是好奇是否有任何方法可以在單元格中顯示文本“雙擊添加日期”,直到輸入日期。 在此先謝謝您(我正在努力使我的文檔盡可能方便用戶使用,以免混淆我的同事)
網站主持人對此評論進行了最小化
您好,上面的代碼對我很有用。 現在我只是想知道是否有辦法讓文本“雙擊輸入日期”出現在單元格中,直到輸入日期。 我的目標是使文檔盡可能用戶友好。 先感謝您
網站主持人對此評論進行了最小化
嗨,特拉維斯,
我們無法修改代碼以直接在單元格中顯示文本。 但或者,下面的優化代碼將有助於在單元格註釋中顯示文本,雙擊單元格輸入日期後,註釋將自動刪除。

私人子工作表_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B10")) 什麼都不是
Target.NoteText "雙擊添加日期"
如果結束
END SUB

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("A1:B10")) 什麼都不是
取消=真
目標.評論.刪除
Target.Formula = 日期
如果結束
END SUB
網站主持人對此評論進行了最小化
你好,

我完全按照寫入空白工作簿的方式複制並粘貼了上面的代碼,但是,它對我不起作用。 我查看了網絡上的不同來源,大多數網站的格式與上面寫的類似。 我想我的 VBA 可能有問題,或者某些設置沒有打開。 任何建議將不勝感激。 我在 Windows 365 上運行 Excel for Office 16.0.11001.20097 MSO (32) 10 位。
網站主持人對此評論進行了最小化
喜歡代碼,它工作得很好。 當我雙擊執行代碼時,我該如何做到這一點,它的顯示時間是軍事時間?
網站主持人對此評論進行了最小化
嗨,迪倫,
抱歉還不能幫你。 感謝您的評論。
網站主持人對此評論進行了最小化
我認為,如果您從工作表中的“格式”->“數字”->“時間”選項中選擇該單元格的軍事時間格式,則應該可以使用。 例如,它提供了下午 1:30 或 13:30 的選項,因此您只需選擇 13:30 即可。
網站主持人對此評論進行了最小化
我認為,如果您只是從數字-> 時間格式選項中選擇該單元格的軍事時間格式,那麼應該這樣做。 例如,您將選擇 13:30 而不是 1:30 PM,然後它應該以軍用時間顯示。
網站主持人對此評論進行了最小化
有誰知道是否有辦法將此代碼插入 Excel Online? 我曾將它與桌面版本一起使用,效果很好,但現在我們已將所有內容遷移到在線平台,雙擊時我的日期和時間戳消失了,我不知道如何查看或編輯代碼。 謝謝。
網站主持人對此評論進行了最小化
所以我插入了代碼,它在我的工作簿中的幾張紙上運行良好,但是在某些紙上,即使我輸入了正確的範圍,它也會在某一行之後突然停止工作。 關於為什麼會發生這種情況的任何想法。
網站主持人對此評論進行了最小化
這正是我所尋找的——這節省了大量時間,我很欣賞寫得很好的說明。 謝謝!
網站主持人對此評論進行了最小化
您好,代碼為我做了很多,我如何限制代碼僅在字段為空白時才能工作。 如果單元格中已經存在日期,雙擊應該什麼都不做,問候
網站主持人對此評論進行了最小化
嗨艾哈邁德,
抱歉,添麻煩了。 要僅通過雙擊填充帶有日期的空白單元格,您可以應用以下 VBA 代碼來完成它。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Updated by Extendoffice 20220609
    If Not Intersect(Target, Range("B1:C20")) Is Nothing Then
        If Target.Value = "" Then
            Cancel = True
            Target.Formula = Date
        End If
    End If
End Sub
網站主持人對此評論進行了最小化
此功能不起作用。 雙擊只是進入手動編輯單元格。
網站主持人對此評論進行了最小化
嗨,鮑勃,
該代碼在我的情況下運行良好。 我需要更具體地了解您的問題,例如您的 Excel 版本。
並且代碼僅適用於您指定的單元格。
網站主持人對此評論進行了最小化
大家好,

我嘗試使用該宏來使用日期戳雙擊列 E 並且它正在工作但是當我嘗試複製宏以執行相同的操作但是對於列 F 上的當前時間它不起作用,因為您可以看到附件我有一條錯誤消息說明:檢測到不明確的名稱。
當我嘗試將 Sub WorkSheet 部分更改為另一個名稱並雙擊單元格時,沒有任何反應。

有人可以幫我嗎?

我的代碼:


Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("E1:E10000")) 什麼都沒有
取消=真
Target.Formula = 日期
如果結束
END SUB

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("F1:F10000")) 什麼都沒有
取消=真
Target.Formula = 現在()
如果結束
END SUB
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
嗨路易斯,
複製宏將導致在單個工作表代碼窗口中具有相同名稱的兩個相同過程。 Excel 不允許在一個模塊中使用兩個或多個相同名稱的函數。 甚至在事件中也沒有。 它會導致歧義。
如果你想對同一個事件做不同的任務,你需要修改原來的代碼來滿足你的需要。
下面的 VBA 代碼可以幫你一個忙。 請試一試。
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Updated by Extendoffice 20221025
    If Not Intersect(Target, Range("E1:E10000")) Is Nothing Then
        Cancel = True
        Target.Formula = Date
    End If
    If Not Intersect(Target, Range("F1:F10000")) Is Nothing Then
        Cancel = True
        Target.Formula = Date
    End If
End Sub
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

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