- ベストアンサー
ユーザーフォームのイベントプロシージャについて
- ユーザーフォーム作成時に自動で空のプロシージャが作成されるタイミングと理由を教えてください。
- 自動でプロシージャが作成されないようにする方法はありますか?
- ユーザーフォームのイベントプロシージャの作成について初心者です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なぜ、前の質問を、そのまま閉じてしまったのでしょうか? きちんと返事をするか、前の質問を締める前に、 もう一度、質問を改めますとかすればよいのではありませんか? こんな場所でも、コミュニティですから、あなたのような常連の質問者は、質問を改めるなら、 ある程度、次につながる言葉は残しておいたほうがよいですよ。 Private Sub UserForm_Click() End Sub VBEで、無意識にでも、コントロールをUserFormに貼り付ければ出来てしまいます。 しかし、「ブックをオープンした場合などに、自動で空のプロシージャが作成されてしまいます。」ということは間違いです。もしブック・オープンで何かが知らないままにできたら、大変なことです。前回、ウィルスと回答したのは、その理由です。 対処法としては、 上記の空のプロシージャを置いたままにするか、 Private Sub UserForm_Initialize() '適当なコード End Sub と置くか、UserFormの起動に関して、他のコントロール(シート上のコマンド・ボタン)にして、UserForm1.Show 0 などとすれば、出来ません。 もちろん、作成中に、UserFormをクリックしなければ、できるはずはありませんが、無意識にでもクリックすることはあります。
その他の回答 (2)
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 >分かってしまうものなのでしょうか? 質問トピックは外れていますが、 「常連の質問者」については、 回答者も質問者も、ある程度、定期的に出てくる人は、狭いコミュニティですから、どんな質問をしているか、どんな回答をしているかぐらいはロムしています。ただし、その人がOkWave全体では、どんな書き込みをしているか知りません。 昔、もっとOkWaveが賑やかな頃、統計を取ったことがありますが、半年ぐらいのスパンで、2回以上の質問者さんは、20名程度だったと思います。その上、私のフィーリングにあう質問の人、言い換えると、常時回答する人は5名程度です。当然、ログも分かるようにしてありますし、複雑な内容の時は、次につながるように、その時使ったワークシートも残しています。そういう、思った以上に狭い世界なのです。 私は、genta1019bostonさんにすでに4~5回程度の回答はしているはずです。しかし、そういっている私は、ここ数年、極端にVBAのレベルが下がってしまいました。なので、あまり、最近は書いていません。
お礼
解答ありがとうございます。 質問常連者だとは知りませんでした。 今後ともよろしくお願いいたします。
- nishi6
- ベストアンサー率67% (869/1280)
>ユーザーフォームモジュールを作成した時点で(例)にある空のプロシージャが初めから作成されていると思いますが。 「空のプロシージャが初めから作成されている」ことはありません(ないはずです)。今までそのような経験はありません。 メニューからユーザーフォームを挿入し、プロジェクトエクスプローラでそのユーザーフォームを右クリックして「コードの表示」を実行してみてください。プロシージャは何もないはずです。 よく、ユーザーフォームのコードウィンドウを開こうとして、フォームの何もないところを(最初はほかのコントロールはありませんが)ダブルクリックしているのを見たことがあります。これはユーザーフォームの既定のイベントが作成され、コードウィンドウが開きます。 コマンドボタンを貼り付けて、「コードの表示」を行ってもプロシージャは自動的には作られませんが、コマンドボタンをダブルクリックするとClickイベントが作られます。これと同じです。 >その後も何かの拍子にからのプロシージャが作成されてます。 私もよくやりますが、他のコントロールをダブルクリックするつもりで、空振りしてユーザーフォームをダブルクリックしています。「またやったか」ということでよく消します。近頃はわざと残しておきます。ユーザーフォームにほかのイベントがないとき、ダブルクリックでユーザーフォームのコードウィンドウに移れるからです。最後には消しますが。 (1)どのタイミングでプロシージャが作成されるのでしょうか? 質問の場合は、ユーザーフォームをダブルクリックした時点でしょう。 または、メニューから、挿入>プロシージャ・・・ (2)何故自動で作成されるのでしょうか? 自動では作成されないはずです。VBEを扱っている人間が操作したはずです。自動で作成されたら事件です。 (3)自動でプロシージャが作成されないようにすることはできるのでしょうか? 自動で作成されないはずなので防止策はないでしょう。 「ウイルスが・・・」のようなハナシはないとします。 私見です。ご参考に。
お礼
早速の回答ありがとうございます。
お礼
ご丁寧な回答ありがとうございます。 前回は失礼いたしました。 ちなみに「常連の質問者」とありますが、質問履歴は非公開としていますが、分かってしまうものなのでしょうか? 今後はマナーに気を付けたいと思います。