Private Sub Worksheet_Change(ByVal Target As Range)
Sheets(1).Name = Range("B1")
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ThisWorkbook.Saved = False Then
Worksheets("Sheet1").Range("H1").Value = Date
End If
End Sub
というコードを組み合わせて使用することができます。ただし、注意点として、カスタムコンテンツによって正しい動作が妨げられる可能性があるため、他のコードとの競合やセキュリティ上の問題がないかを確認することが重要です。
Excelでシート名と最終更新日を自動表示したい
Excelを使って
(1)セルA1に入れた名目をシート名にし
(2)セルH1には、最終更新日を自動で入れたいです。
調べた結果、
シート名を右クリックして「コードの表示」から
(1)は
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets(1).Name = Range("B1")
End Sub
を入れてうまくいきましたが、
(2)は
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ThisWorkbook.Saved = False Then
Worksheets("Sheet1").Range("H1").Value = Date
End If
End Sub
を入れてみましたが(←調べましたもの)
うまくいきませんでした。
単純に、
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets(1).Name = Range("B1")
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ThisWorkbook.Saved = False Then
Worksheets("Sheet1").Range("H1").Value = Date
End If
End Sub
とつなげて入れるのではだめなんでしょうか?
それとも、(2)の何かが間違っていますか?
ご教授願います。
回答ありがとうございます。
このサイトは、質問文のコードで試すまでに
既に読んでおりまして
今回もう一度
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
Set Rng = Range("H1")
On Error GoTo ErrHandler
Application.EnableEvents = False
Rng.Value = Date
ErrHandler:
Application.EnableEvents = True
End Sub
を入力してみましたが
そもそも何もH1には出てきません。
(A1には既にシート名になるものを入れてあり、シート名はA1のものが入っています)
すみません、ド素人なんです。
力技で、質問文の内容までこぎつけたレベルです。。
回答ありがとうございます。
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets(1).Name = Range("B1")
End Sub
Private Sub ThisWorkbook(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ThisWorkbook.Saved = False Then
Worksheets("Sheet1").Range("H1").Value = Date
End If
End Sub
にして、保存し
一旦閉じてから開いて
適当なセルに入力して保存しても何もでてきませんでした。。。
お礼
再度自力で調べ、解決しました! 今後このページをご覧になる方へ念のため書き記します。 まず (1)セルA1に入れた名目をシート名にする シート名を右クリックして「コードの表示」から Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("A1") End Sub (2)セルH1には、最終更新日を自動で入れる シート名を右クリックして「コードの表示」から 開いたウィンドウの上部にある「挿入」→「標準モジュール」を選びます。 すると標準モジュールが追加されるので、 左側には、 プロジェクト - VBAProject -■VBAProject(Book1) -□MicrosoftExcelObject │├Sheet1(Sheet1) │├Sheet2(Sheet2) │├Sheet3(Sheet3) │└ThisWorkbook -□標準モジュール └Module1 と「標準モジュール」部分が追加されているはずです。 そして、新しく開いたウィンドウの部分に Public Function LastSaveTime() As Variant Application.Volatile LastSaveTime = ThisWorkbook.BuiltinDocumentProperties("Last save time").Value End Function をコピペ。 最後に、更新日付を表示させたいセル(今回だとH1)に =LastSaveTime() をコピペ。 不思議な数字の配列が表示された場合は 「セルの書式設定」の表示から「日付」で 好みのものを選び(2011/7/23とか)ます。 すると、できました! 教えていただいた 「ThisWorkbook」の操作から解決はできませんでしたが 二度もご回答いただきましたので、 ベストアンサーはkybo さんにしたいと思います! どうも、ありがとうございました★
補足
回答ありがとうございます。 ただ、どうしても解決しません。。。 教えていただいた画面から「ThisWorkbook」をダブルクリックして 新しく開いた画面に ■ ■ ■■ ■ ■■ ■ ■■ ■ ■■ ■ ■■ ■ ■ Private Sub ThisWorkbook(ByVal SaveAsUI As Boolean, Cancel As Boolean) If ThisWorkbook.Saved = False Then Worksheets("Sheet1").Range("H1").Value = Date End If End Sub ■ ■ ■■ ■ ■■ ■ ■■ ■ ■■ ■ ■■ ■ ■ そして もともと入れていた画面に □ □ □□ □ □□ □ □□ □ □□ □ □□ □ □ Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub □ □ □□ □ □□ □ □□ □ □□ □ □□ □ □ と入れましたが…、 シート名は相変わらずかわるものの 最終更新日が入りません。。。 コードの中のシート名は、 変更後のシート名(コードで指定したもの)を入れなくてはならないのでしょうか? つまり、シート名をB1で「りんご」と入れた場合 ■ ■ ■■ ■ ■■ ■ ■■ ■ ■■ ■ ■■ ■ ■ Private Sub ThisWorkbook(ByVal SaveAsUI As Boolean, Cancel As Boolean) If ThisWorkbook.Saved = False Then Worksheets("りんご").Range("H1").Value = Date End If End Sub ■ ■ ■■ ■ ■■ ■ ■■ ■ ■■ ■ ■■ ■ ■ と入れるのでしょうか? 試しにやってみたんですが、変わりませんでしたが。。。 〝ThisWorkbook”も、〝りんご″に変えた方がいいんでしょうか?