Excel 2007 新しい日付を入力

Excel 2007 新しい日付を入力

開いたときに自動的に更新したい 3 つのフィールドを持つ Excel テンプレートを作成しようとしています。

このテンプレートに含まれるフィールド

  • 現在の日付: 2012/02/07
  • シート番号: 25
  • 期間: 2012/02/07 ~ 2012/02/08

2012年3月8日以降にこのテンプレートを開くと、このシートには新しいデータが表示されます。

  • 現在の日付: 2012/03/08
  • シート番号: 26
  • 期間: 2012/03/08 ~ 2012/02/09

現在の日付

Private Sub Workbook_Open() 
     ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Date 
End Sub

これは Excel 関数を使用して実行できますか、それとも VB を使用する必要がありますか。また、次回これらの日付を使用するように、テンプレートを新しい値で自動的に更新するにはどうすればよいですか。

答え1

これを実現するにはいくつかの方法があります。

最も簡単なのは、開始日と終了日が一貫していることを前提とすることです。

  1. 「間」の日付は2つのセルに入力する必要があります。「開始」日は現在の月の2日に設定され=DATE(YEAR( NOW() ), MONTH( NOW() ), 2)、「終了」日は現在の月の2日+1に設定されます。=DATE(YEAR( NOW() ), MONTH( NOW() ) +1, 2)
  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。これは、セルの値をコピー/貼り付けして、数式を日付に置き換えるだけです。

おっと、これには 1 つ追加が必要です。私が提供したコードは少し単純すぎるので、テンプレートを保存できないため、テンプレート自体を編集するときにトリガーされないように、提供されたコードをラップする必要があります。おそらく最も簡単な方法は、ファイルに命名規則を使用することです。おそらく、テンプレートのファイル名の先頭に「TEMPLATE」というテキストがあります。

関連情報