advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 19641 for 20�����������������������... (0.004 sec.)
[[20200319214706]]
#score: 2681
@digest: 211eb5fdab64805091715af36c65faef
@id: 82742
@mdate: 2020-03-22T21:00:46Z
@size: 6042
@type: text/plain
#keywords: 新履 (30384), 歴" (14963), 歴") (12850), トン (11631), 履歴 (10499), 副作 (5709), sheetchange (5688), 更履 (4093), ト処 (3860), (ok (3662), 作用 (3420), 再帰 (2963), 2020 (2724), カー (2661), 考hp (2605), 金) (2412), 更新 (2114), workbook (2078), (カ (2033), ー名 (1644), イベ (1546), ベン (1266), sheets (1089), 作動 (1031), ン) (941), 非表 (930), )20 (866), ート (844), target (813), private (803), ウィ (800), ィン (799)
『セルに入力した時の履歴を残したい。』(カートン)
複数のシートは1月〜12月まであります。各シート毎でセル内容を変更したい際に、変更履歴というシート内に履歴を残したいです。 履歴内容としては、ユーザー名と時間、変更したシートおよびセル。 これらを表示する事は、可能でしょうか? お願い致します。 < 使用 Excel:Excel2019、使用 OS:Windows8 > ---- 「セル 変更 履歴」で過去ログ検索したら 参考になるかも。 (OK) 2020/03/19(木) 21:58 ---- 返信ありがとうございます。ユーザー名と時間迄は見つけたんてすが、上記全てに当てはまるのが無くて、質問させていただきました。 (カートン) 2020/03/19(木) 22:38 ---- 私が提示したキーワードで検索しましたか? お望みの全てを網羅する過去ログがだいぶ上位で ヒットしましたけど。 (OK) 2020/03/19(木) 23:53 ---- できれば、VBAを使用した方法が知りたいのですが… (カートン) 2020/03/20(金) 00:03 ---- もちろんVBAでの方法が上位でヒットしていることを確認済みです。 (OK) 2020/03/20(金) 00:05 ---- https://kantan-shikaku.com/ks/auto-log/ これのことでしょうか? これだと、何処のセルが変更したかが情報として足りないんです。 (カートン) 2020/03/20(金) 00:19 ---- 私は「過去ログを検索」と書きました。 ネットを検索、とは書いてません。 (OK) 2020/03/20(金) 00:30 ---- そういう事ですか。ありがとうございます。 (カートン) 2020/03/20(金) 01:09 ---- Private Sub Workbook_Open() flg = False For i = 1 To ActiveWorkbook.Sheets.Count If Sheets(i).Name = "更新履歴" Then flg = True Exit For End If Next If flg = False Then Sheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = "更新履歴" With Sheets("更新履歴") .Range("A1") = "シート名" .Range("B1") = "変更セル" .Range("C1") = "値" .Range("D1") = "年月日 時 刻 " .Range("E1") = "ユーザー名" End With End If Sheets("更新履歴").Visible = False Sheets(1).Select End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "更新履歴" Then Exit Sub With Sheets("更新履歴") .Rows(2).Insert Shift:=xlDown .Range("A2").Value = Sh.Name .Range("B2").Value = Target.Address .Range("C2").Value = Target.Value .Range("D2").Value = Now() .Range("E2").Value = Application.UserName .Columns("A:E").EntireColumn.AutoFit End With End Sub 自分の求めているものは、これなんですが。 これらをどこのモジュールい挿入そればよろしいでしょうか? (カートン) 2020/03/20(金) 08:45 ---- >Private Sub Workbook_Open() VBEのプロジェクトウィンドで「ThisWorkbook」を選択して(ダブルクリック) 表示されるコードウィンドに入力(コピー)します。 >Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) シート名上で右クリックして「コードの表示」を選択して表示される コードウィンドに入力(コピー)します。 (メジロ) 2020/03/20(金) 08:55 ---- コメントありがとうございます。 早速やってみます。ありがとうございます (カートン) 2020/03/20(金) 09:07 ---- 何度も申し訳ありません。ThisWorkbookに >Private Sub Workbook_Open() sheet1には Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) を入れました。 その後、Sheet1に入力等行っても 更新履歴(Sheet2)に、履歴が表示されません。 何かおかしい部分はありますか? おしえてください。 (カートン) 2020/03/20(金) 09:35 ---- Workbook_SheetChangeもWorkbook_Openと同じところに置けばいいですよ。 (γ) 2020/03/20(金) 09:50 ---- ブック起動時にマクロが有効になってない場合も イベントが発生しないのでマクロが作動しません。 (OK) 2020/03/20(金) 10:55 ---- 参考HPです。 Excel VBA ブックとワークシートのイベントプロシージャ https://kosapi.com/post-3075/ (OK) 2020/03/20(金) 11:10 ---- もう一つ参考HPです。 【エクセル初心者向け】VBAマクロを有効化するための初期設定 https://www.excelspeedup.com/macrosettei/ (OK) 2020/03/20(金) 11:13 ---- 作動できましたありがとうございます。 履歴確認後、保存し、ファイルを開くと、更新履歴のシートが消失してしまいます。しかし、コード表示でシート確認するとシートが残っているんですが、どういう事でしょうか? (カートン) 2020/03/20(金) 18:20 ---- okさん、細かい所までありがとうございます。 (カートン) 2020/03/20(金) 18:27 ---- こんばんは ^^ 非表示になってたりしませんでしょうか (隠居じーさん) 2020/03/20(金) 18:33 ---- ブックは閉じているけど、アプリケーションは閉じてない、 ということはありませんか? 一旦アプリケーションまで閉じても再現しますか? (OK) 2020/03/20(金) 19:00 ---- 非表示になっていたので、表示にしたら出てきました。しかし、一度閉じると非表示に戻っています。 (カートン) 2020/03/20(金) 19:28 ---- ↓では? >Sheets("更新履歴").Visible = False (OK) 2020/03/20(金) 19:31 ---- >.Range("C2").Value = Target.Value フィルドラッグなどで複数セル内容を一括で変更した 場合にはエラーになる可能性があります、 (OK) 2020/03/20(金) 19:40 ---- ちょっと間が空きましたが、気づいた点を少し。 (1) >.Range("C2").Value = Target.Value がエラーになる可能性ですが、私も最初はそのように思いましたが、 この場合は、二次元配列の最初の値だけが、セルに書き込まれるだけで、 エラーにはならないように思います。 (結果として、配列のいわゆるスライス処理になるので) (2) change系のイベント処理のなかで、セルを変更すると、 再帰的にイベント処理が動作してしまうので、 これを避ける処理を入れるのが一般的です。 (Application.EnableEventsを調べて下さい。) 今のコードでは、再帰は発生してしまっていますが、 If Sh.Name = "更新履歴" Then Exit Subで抜けるので 実質的に障害が起きる訳ではありません。 ただ、change系のイベント処理のなかでのセル操作には常に注意が必要で、 上記対応を行う習慣にしておいたほうが安全だし、効率も良いはずです。 うっかりすると無限ループが発生して落ちることすらあります。 (3) 手作業の結果による履歴を取るマクロを実行する副作用として、 手作業の取り消しが無効になります(処理を取り消して、元に戻すことができない)。 これはマクロ実行全般が持つ基本的な性質によるものですから、如何ともしがたいです。 ただ、手入力作業に関して取消作業が頻出する感じもしないので、 上記の副作用によるデメリットを上回るメリットがあれば、 更新記録として使える処理かと思います。 なお、ワークシートの非表示処理もそうですが、 コードにキチンとインデントをつけたうえで、 よく読まれることをお薦めします。 (γ) 2020/03/23(月) 06:00 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202003/20200319214706.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97004 documents and 608067 words.

訪問者:カウンタValid HTML 4.01 Transitional