- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでセルに変更があったらユーザアカウントを取得)
VBAでセルに変更があったらユーザアカウントを取得
このQ&Aのポイント
- VBA初心者の方が、セルに変更があった場合にその変更内容とユーザアカウント名を取得したいと考えています。イベントプロシージャを使用して実現しようとしましたが、無限ループに陥ってしまう問題が発生しています。解決方法や代替手段についてアドバイスをいただきたいです。
- VBAを使用して、セルの変更があった際にその変更内容と変更したユーザアカウント名を取得する方法について教えてください。イベントプロシージャを使用しようとしましたが、無限ループに陥ってしまうため、他の方法があれば教えてください。
- VBAのイベントプロシージャを使用して、セルの変更を監視し、変更内容とユーザアカウント名を取得したいと考えています。しかし、現在のコードでは、書き込まれたユーザアカウントも「変更」とみなされて無限ループに陥ってしまいます。この問題を解決する方法や、代替手段があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Application.EnableEvents=False Target.Offset(0, 1).Value = Application.UserName Target.Offset(0, 2).Value = Now Application.EnableEvents=True End Sub Eventを受けた時、続くEventを無効にします。1つのEvent処理をしたら、Event処理を有効にします。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
回答No.2
たまに見かけますね。無限ループもどきに陥る回答をされて 解決しましたぁ!・・・ての。 回避策は#1さんので十分かと思いますが Application.UserName だとインストール時の名前が返ってくるだけなのでは? 環境が違うと変わるかもしれません。確認してください。 Windowsのユーザアカウント名なら environ("username") が良さそうににも思えますけど?
質問者
お礼
なるほど、確かにユーザアカウントを取得するなら environ("username") の方がよさそうです。 ・ユーザアカウントの取得⇒environ("username") ・複数のユーザアカウント持っていて誰だか判らなくなって困る場合⇒Application.UserName で、使い分けようかと思います。ありがとうございました。
お礼
お礼が遅くなり申し訳ありません。 教えていただいた方法でできました。 いくつかVBAの参考書を持っているのですが、意外とこういう基本的な事が書いてないんですね。 VBEのヘルプも、「Application.EnableEvents」から検索すればヒットしますけど、そもそも、そういうものがあることを知らないとなかなか探せないです。 非常に助かりました。