[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルに入力した時の履歴を残したい。』(カートン)
複数のシートは1月〜12月まであります。各シート毎でセル内容を変更したい際に、変更履歴というシート内に履歴を残したいです。
履歴内容としては、ユーザー名と時間、変更したシートおよびセル。
これらを表示する事は、可能でしょうか?
お願い致します。
< 使用 Excel:Excel2019、使用 OS:Windows8 >
私が提示したキーワードで検索しましたか? お望みの全てを網羅する過去ログがだいぶ上位で ヒットしましたけど。 (OK) 2020/03/19(木) 23:53
自分の求めているものは、これなんですが。
これらをどこのモジュールい挿入そればよろしいでしょうか?
(カートン) 2020/03/20(金) 08:45
>Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
シート名上で右クリックして「コードの表示」を選択して表示される
コードウィンドに入力(コピー)します。
(メジロ) 2020/03/20(金) 08:55
sheet1には Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
を入れました。
その後、Sheet1に入力等行っても 更新履歴(Sheet2)に、履歴が表示されません。
何かおかしい部分はありますか?
おしえてください。
(カートン) 2020/03/20(金) 09:35
(γ) 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
ブックは閉じているけど、アプリケーションは閉じてない、 ということはありませんか? 一旦アプリケーションまで閉じても再現しますか? (OK) 2020/03/20(金) 19:00
↓では?
>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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.