複数人のスタッフで1つのエクセルファイルを管理しています。
管理方法は下記の通りです。
現在、担当しているお客様から連絡やアポイントなどがあったかを記録に残すためのexcelデータを作成しています。
1つのexcelファイルに人数分のシートを作成し、それぞれが自分のシートに毎月の連絡の有無を○×形式で記入していきます。
シート内には各自が担当している案件名と1月~12月までの見出し、備考欄などが記載されています。
それぞれのシートの内容が書き換えられた最終更新日を所定のセルに記載させたいのです。
マクロを使用して下記のような記述をしてみましたが、どれか1つのセルを変更すると全てのシートの最終更新日が同じ時間に更新されたような表記になってしまします。
【使用している関数】=LastSaveTime()
【記述内容】
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
With Sh
If Intersect(Target, .Range("E4:P100")) Is Nothing Then Exit Sub
.Range("Q2").Value = Date
End With
End Sub
複数人でエクセルファイルを管理するため、誰がいつ担当のシートを書き換えたかを記載するためにはどの様な記述をすれば良いのでしょうか?
excel、マクロともに初心者のため分かりやすくお教え頂ければと思います。
お手数をおかけ致しますが、宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
SheetChangeイベントはご理解されているようですね(^^)
で、このSheetChangeイベントは「シートに変更が入った時点で」イベントが発生。処理が動きます。
つまり、この処理の中で「シートに変更」を行うと、またイベントが発生してしまうんですね。
なので・・・イベント発生を一時的に抑止する必要があります。(EnableEvets)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'イベント抑止
Application.EnableEvents = False
With Sh
If Intersect(Target, .Range("E4:P100")) Is Nothing Then GoTo EndRtn
.Range("Q2").Value = Date
End With
EndRtn:
'イベント抑止を解除
Application.EnableEvents = True
End Sub
イベント抑止は、この処理終了時に必ず解除する必要があります。そのため、Exit Sub は使用せず、GoToでラベル(例ではEndRtn)へ飛ばし、抑止解除してから終了するようにしています。
これで「どこかのシートのセル範囲E4:P100に変更が加えられたら、そのシートのセルQ2に日付を入れる」処理が実現すると思います。
この回答への補足
Cor_moriyan様
上記の方法でシートを作成してみましたが、最終更新日を表示させるセルに
=LastSaveTime()
を記述したところ
#NAME?
と表示されてしまいました。
セルの書式設定も日付に変更しましたが変化がありません。
VBEを適用するまでの流れは下記アドレスのNo.5様を参考にさせて頂いております。
http://oshiete.goo.ne.jp/qa/4367944.html
上記の方法と今回の方法はそもそも目的としているものが違うのでしょうか?
素人目には同じような目的だと感じたので参考にさせていただいたのですが…
何度もお手数をおかけ致しますがご回答の程、宜しくお願い致します。
No.3
- 回答日時:
NO2です。
>どれか1つのセルを変更すると全てのシートの最終更新日が同じ時間に更新されたような表記に
>なってしまします。
⇒LastSaveTime()の自作関数マクロに「Application.Volatile」が定義されており、
セル変更により自動計算されているからだと思います。(通常のワークシート関数の振舞と同じ)
先ずは、コード云々より自作関数マクロとこのイベントマクロの適用方法を検討する必要が
あるのではないでしょうか。
No.2
- 回答日時:
>どれか1つのセルを変更すると全てのシートの最終更新日が同じ時間に更新されたような表記になってし>まします。
⇒シートイベントだから対象シートしか処理されない筈です。
他のシートにも反映されているとしたら全シートが選択されている状態になって
いればそのような結果になりますので、全シート選択状態を解除してから入力して下さい。
>誰がいつ担当のシートを書き換えたかを記載
⇒Environ("USERNAME")で環境変数のユーザ名を取得できるのでこれを追記しては
如何でしょうか。
(例).Range("Q2").Value = Date & Environ("USERNAME")
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
治せない「クセ」を教えてください
なくて七癖という言葉どおり、人によっていろいろなクセがありますよね。 あなたには治せないクセがありますか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
冬の健康法を教えて!
温度変化が大きくなり、風邪をひきやすいこれからの季節。 どんなことに気をつけていますか?
-
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
excelでシート毎の最終更新日を所定の場所に表示
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
Excel、同じフォルダ内のExcel...
-
エクセルでファイルを開いたと...
-
前の(左隣の)シートを連続参...
-
エクセルでファイル保存時に複...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルで前シートを参照して...
-
エクセル 計算式も入っていない...
-
EXCEL:同じセルへどんどん足し...
-
特定のシートの削除を禁止した...
-
シートの保護のあとセルの列、...
-
EXCELで同一フォーマットのシー...
-
Excelのシートを、まとめて表示...
-
エクセルで前のシートを連続参...
-
エクセルVBA 串刺し計算の際、...
-
シート番号からシート名を取得する
-
EXCELで1ヶ月分の連続した日付...
-
VBAでシートコピー後、シート名...
-
シート1に列挙したNGワードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
別シート参照のセルをシート毎...
-
Excelのシートを、まとめて表示...
-
excelでシート毎の最終更新日を...
-
EXCEL:同じセルへどんどん足し...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
シートの保護のあとセルの列、...
-
Excel、同じフォルダ内のExcel...
-
特定のシートの削除を禁止した...
-
エクセルで前のシートを連続参...
-
エクセルのシート名をリスト化...
-
Accessのスプレッドシートエク...
-
前の(左隣の)シートを連続参...
-
エクセルで前シートを参照して...
-
VBAでシートコピー後、シート名...
-
EXCELで同一フォーマットのシー...
-
EXCELで1ヶ月分の連続した日付...
-
シート番号からシート名を取得する
おすすめ情報