
我嘗試建立一個 Excel 模板,其中包含三個我希望在開啟時自動更新的欄位。
該模板將包含的字段
- 目前日期: 02/07/2012
- 頁數:25
- 日期期間: 02/07/2012 至 02/08/2012
當我在 2012 年 3 月 8 日之後開啟此範本時,此表將包含新數據
- 目前日期: 03/08/2012
- 頁數:26
- 日期期間: 03/08/2012 至 02/09/2012
對於目前日期
Private Sub Workbook_Open()
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Date
End Sub
這可以使用 Excel 函數來完成嗎?
答案1
有多種方法可以實現這一目標。
最簡單的假設是開始日期和結束日期一致。
- 「之間」日期應位於兩個儲存格中。 「開始」日期設定為當月 2 號
=DATE(YEAR( NOW() ), MONTH( NOW() ), 2)
,「結束」日期設定為當月 2 號+1=DATE(YEAR( NOW() ), MONTH( NOW() ) +1, 2)
- 然後,將“目前”日期簡單地設定為“開始”日期。
但是,您需要在儲存電子表格時「修復」這些日期。假設「目前」日期位於儲存格 B3 中,日期之間的 2 個日期位於儲存格 中。你可以使用類似的東西:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range("B3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Range("B5:C5").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
在ThisWorkbook
程式碼模組中。這只是在單元格上複製/貼上值,以便將公式替換為日期。
哎呀,對此還需要補充一點。我給出的程式碼有點簡單化,因為您無法保存模板,因此您需要將給定的程式碼包裝在某些內容中,以防止它在編輯模板本身時觸發。最簡單的方法可能是對檔案使用命名約定。也許模板的檔名開頭有文字“TEMPLATE”。