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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】顧客番号にて一致さ...
-
【マクロ】毎回、ファイル名が...
-
エクセルのマクロで指定条件一...
-
EXCELVBA データを自動で別シー...
-
Excelで同じシートのコピーを一...
-
Excel、同じフォルダ内のExcel...
-
前の(左隣の)シートを連続参...
-
エクセルの複数シートの保護を...
-
条件に応じて特定の行を非表示...
-
別シート参照のセルをシート毎...
-
エクセルVBAでパスの¥マークに...
-
Excel2007で、太字にした行のみ...
-
Excelのシートを、まとめて表示...
-
VBAでシートコピー後、シート名...
-
エクセルで前シートを参照して...
-
Excelでセル内の数式は残し値だ...
-
エクセルで前のシートを連続参...
-
EXCEL:同じセルへどんどん足し...
-
エクセルでファイル保存時に複...
-
EXCELで1ヶ月分の連続した日付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのマクロで指定条件一...
-
シートをコピーして シートに...
-
Excelでシート名と最終更新日を...
-
エクセルのマクロ設定について...
-
Excel マクロ 他ブックのシート...
-
Excel シートを自動作成、セル...
-
シートをコピー、シート名を変更
-
Excel で選択しているセルの行...
-
Excel VBA 検索して該当行を抽出
-
エクセル マクロの作り方
-
EXCELVBA データを自動で別シー...
-
新しいマクロの記録でコピーし...
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
条件に応じて特定の行を非表示...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで1ヶ月分の連続した日付...
おすすめ情報