
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)の何かが間違っていますか?
ご教授願います。
No.4ベストアンサー
- 回答日時:
Workbook_BeforeSaveは「ThisWorkbook」に記述してみて下さい。
の意味がおわかりになられていないようなので、以下の画像をよくご覧になって下さい。
「Workbook_BeforeSave」のコードは、プロジェクトエクスプローラのThisWorkbookをダブルクリックの上、記述します。
「Worksheet_Change」については、その場所でOKです。

この回答への補足
回答ありがとうございます。
ただ、どうしても解決しません。。。
教えていただいた画面から「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”も、〝りんご″に変えた方がいいんでしょうか?
再度自力で調べ、解決しました!
今後このページをご覧になる方へ念のため書き記します。
まず
(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 さんにしたいと思います!
どうも、ありがとうございました★
No.3
- 回答日時:
それぞれのマクロを正しく使用しなければ動きません。
闇雲にコピーしましたでは,ダメです。1のマクロは次のようにします
http://excelvba.pc-users.net/fol3/3_6.html
2のマクロは次のようにします
http://excelvba.pc-users.net/fol4/4_5.html
別の方法:
シートのマクロは,シート名タブを右クリックしてコードの表示を選んで記述します。
これはご質問で見つけてきたやり方ですね。いわずもがなですが,シートのマクロを効かせたい「正しいシート」に登録しなければ動きません。
ブックのマクロは,ブックをエクセルウィンドウの中で最大化ではない状態にしてから,ブックウィンドウのタイトルの左端のブック名の左隣りのアイコンを右クリックしてコードの表示を選び,現れたシートに記述します。
No.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のものが入っています)
すみません、ド素人なんです。
力技で、質問文の内容までこぎつけたレベルです。。
No.1
- 回答日時:
Workbook_BeforeSaveは「ThisWorkbook」に記述してみて下さい。
この回答への補足
回答ありがとうございます。
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
にして、保存し
一旦閉じてから開いて
適当なセルに入力して保存しても何もでてきませんでした。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】毎回、ファイル名が...
-
シートをコピーして シートに...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
エクセルでファイルを開いたと...
-
Excelのシートを、まとめて表示...
-
シートを追加・名前を次月に変...
-
Excel、同じフォルダ内のExcel...
-
Excel2007で、太字にした行のみ...
-
複数シートの特定の位置に連番...
-
エクセル 計算式も入っていない...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
VBAで条件によりフォントサイズ...
-
至急お願いします。エクセルシ...
-
エクセルで前シートを参照して...
-
Accessのスプレッドシートエク...
-
ピボットテーブルの集計セルを...
-
エクセルで複数設定したハイパーリンク先...
-
値貼り付けをしても書式も貼り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのマクロで指定条件一...
-
【マクロ】毎回、ファイル名が...
-
シートをコピーして シートに...
-
エクセル マクロの効率化について
-
【マクロ】顧客番号にて一致さ...
-
新しいマクロの記録でコピーし...
-
エクセル マクロの作り方
-
Excel で選択しているセルの行...
-
エクセルのマクロ設定について...
-
エクセルのマクロ コマンドボ...
-
エクセル マクロ 任意のファ...
-
Excel VBA 検索して該当行を抽出
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルで前シートを参照して...
-
エクセルでファイルを開いたと...
-
特定のシートの削除を禁止した...
-
Excelで金銭出納帳。繰越残高を...
おすすめ情報