• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザーフォームのイベントプロシージャについて)

ユーザーフォームのイベントプロシージャについて

このQ&Aのポイント
  • ユーザーフォーム作成時に自動で空のプロシージャが作成されるタイミングと理由を教えてください。
  • 自動でプロシージャが作成されないようにする方法はありますか?
  • ユーザーフォームのイベントプロシージャの作成について初心者です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

なぜ、前の質問を、そのまま閉じてしまったのでしょうか? きちんと返事をするか、前の質問を締める前に、 もう一度、質問を改めますとかすればよいのではありませんか? こんな場所でも、コミュニティですから、あなたのような常連の質問者は、質問を改めるなら、 ある程度、次につながる言葉は残しておいたほうがよいですよ。 Private Sub UserForm_Click() End Sub VBEで、無意識にでも、コントロールをUserFormに貼り付ければ出来てしまいます。 しかし、「ブックをオープンした場合などに、自動で空のプロシージャが作成されてしまいます。」ということは間違いです。もしブック・オープンで何かが知らないままにできたら、大変なことです。前回、ウィルスと回答したのは、その理由です。 対処法としては、 上記の空のプロシージャを置いたままにするか、 Private Sub UserForm_Initialize() '適当なコード End Sub と置くか、UserFormの起動に関して、他のコントロール(シート上のコマンド・ボタン)にして、UserForm1.Show 0 などとすれば、出来ません。 もちろん、作成中に、UserFormをクリックしなければ、できるはずはありませんが、無意識にでもクリックすることはあります。

genta1019boston
質問者

お礼

ご丁寧な回答ありがとうございます。 前回は失礼いたしました。 ちなみに「常連の質問者」とありますが、質問履歴は非公開としていますが、分かってしまうものなのでしょうか? 今後はマナーに気を付けたいと思います。

その他の回答 (2)

回答No.3

こんにちは。 >分かってしまうものなのでしょうか? 質問トピックは外れていますが、 「常連の質問者」については、 回答者も質問者も、ある程度、定期的に出てくる人は、狭いコミュニティですから、どんな質問をしているか、どんな回答をしているかぐらいはロムしています。ただし、その人がOkWave全体では、どんな書き込みをしているか知りません。 昔、もっとOkWaveが賑やかな頃、統計を取ったことがありますが、半年ぐらいのスパンで、2回以上の質問者さんは、20名程度だったと思います。その上、私のフィーリングにあう質問の人、言い換えると、常時回答する人は5名程度です。当然、ログも分かるようにしてありますし、複雑な内容の時は、次につながるように、その時使ったワークシートも残しています。そういう、思った以上に狭い世界なのです。 私は、genta1019bostonさんにすでに4~5回程度の回答はしているはずです。しかし、そういっている私は、ここ数年、極端にVBAのレベルが下がってしまいました。なので、あまり、最近は書いていません。

genta1019boston
質問者

お礼

解答ありがとうございます。 質問常連者だとは知りませんでした。 今後ともよろしくお願いいたします。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

>ユーザーフォームモジュールを作成した時点で(例)にある空のプロシージャが初めから作成されていると思いますが。  「空のプロシージャが初めから作成されている」ことはありません(ないはずです)。今までそのような経験はありません。  メニューからユーザーフォームを挿入し、プロジェクトエクスプローラでそのユーザーフォームを右クリックして「コードの表示」を実行してみてください。プロシージャは何もないはずです。  よく、ユーザーフォームのコードウィンドウを開こうとして、フォームの何もないところを(最初はほかのコントロールはありませんが)ダブルクリックしているのを見たことがあります。これはユーザーフォームの既定のイベントが作成され、コードウィンドウが開きます。  コマンドボタンを貼り付けて、「コードの表示」を行ってもプロシージャは自動的には作られませんが、コマンドボタンをダブルクリックするとClickイベントが作られます。これと同じです。 >その後も何かの拍子にからのプロシージャが作成されてます。  私もよくやりますが、他のコントロールをダブルクリックするつもりで、空振りしてユーザーフォームをダブルクリックしています。「またやったか」ということでよく消します。近頃はわざと残しておきます。ユーザーフォームにほかのイベントがないとき、ダブルクリックでユーザーフォームのコードウィンドウに移れるからです。最後には消しますが。 (1)どのタイミングでプロシージャが作成されるのでしょうか?  質問の場合は、ユーザーフォームをダブルクリックした時点でしょう。  または、メニューから、挿入>プロシージャ・・・ (2)何故自動で作成されるのでしょうか?  自動では作成されないはずです。VBEを扱っている人間が操作したはずです。自動で作成されたら事件です。 (3)自動でプロシージャが作成されないようにすることはできるのでしょうか?  自動で作成されないはずなので防止策はないでしょう。 「ウイルスが・・・」のようなハナシはないとします。 私見です。ご参考に。

genta1019boston
質問者

お礼

早速の回答ありがとうございます。

関連するQ&A