• 締切済み

VBA ユーザーフォームのイベントプロシージャ

いつもお世話になっております。 VBAを勉強中の初心者です。 最近ユーザーフォームの作成について学習しております。 ユーザーフォームモジュールにコードを記述しているのですが、何かの拍子?ブックをオープンした場合などに、自動でプロシージャが作成されてしまい困っています。 (1)どのタイミングでプロシージャが作成されるのでしょうか? (2)何故自動で作成されるのでしょうか? (3)自動でプロシージャが作成されないようにすることはできるのでしょうか? 以上についてご教授ください。 よろしくお願いします。

みんなの回答

回答No.2

>ブックをオープンした場合などに、 >自動でプロシージャが作成されてしまい困っています。 #1さんも書いていますが、どんなコードなのでしょうか? ただ、オープンした時に、書き出すものは、ウィルスと同じ動作です。 ふつう、正常なExcelの場合は、ご質問のようなことはありません。 もしそうなら、レジストリを操作している模様です。 アンチウィルスは正しく作動していますか? ユーザー側と、Program Files 側と、それぞれ1つずつXLSTART フォルダーがありますが、まず、そこの中身を調べてみて、不要なファイルは入っていないか、次に、その隣のフォルダーに、似たような名前のフォルダーが出来ていないか調べます。あったら、それらを削除します。

genta1019boston
質問者

お礼

ありがとうございます。

  • sora1515
  • ベストアンサー率58% (54/92)
回答No.1

どのようなプロシージャが作成されるのか。くらいは書きましょう。 ・プロシージャ名 ・中身 ひょっとしてユーザーフォームダブルクリック時に作成される↓ Private Sub UserForm_Click() End Sub のクリックイベントの空プロシージャなどでしょうか??

genta1019boston
質問者

お礼

ありがとうございます。

関連するQ&A

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

    いつもお世話になっております。 VBAを勉強中の初心者です。 最近ユーザーフォームの作成について学習しております。 ユーザーフォームモジュールにコードを記述しているのですが、何かの拍子?ブックをオープンした場合などに、自動で空のプロシージャが作成されてしまいます。 ユーザーフォームモジュールを作成した時点で(例)にある空のプロシージャが初めから作成されていると思いますが。その後も何かの拍子にからのプロシージャが作成されてます。 (例) Private Sub UserForm_Click() End Sub (1)どのタイミングでプロシージャが作成されるのでしょうか? (2)何故自動で作成されるのでしょうか? (3)自動でプロシージャが作成されないようにすることはできるのでしょうか? 以上についてご教授ください。 よろしくお願いします。

  • VBA ユーザーフォームを閉じる時にイベント

    VBAでユーザーフォームを閉じるときに名前を付けて保存しブックを閉じるようにしたいのですが、 ユーザーフォームを閉じるときのイベントの起こし方がよく分かりません。 また名前を付けて保存しブックを閉じるのはこれでよろしいでしょうか? Application.Dialogs(xlDialogSaveAs).Show ActiveWorkbook.close

  • フォームモジュールが作られない

    アクセスです。 新規でフォーム1を作成し、何もしないで(いじらないで)保存し、 VBE画面でフォーム1のForm_Loadイベントにコードを記述しようと思っても、  画像のようにフォームモジュールがありません。 フォームのデザインビューから適当に何かのイベントプロシージャーのボタンを押せば、 フォームモジュールが生成されます。 これは仕様でしょうか? エクセルは最初からシートモジュールやブックのモジュールがありますよね。

  • ユーザーフォームから

    お世話になります。 ユーザーフォームにて、 オプションボタンでどれかを選択出来るようにし、 コマンドボタンで決定する様にしてあります。 選択した内容によりcallで別の標準モジュールに あるsubプロシージャに飛ばしたいのですが、 その記述方法が分かりません。 良くByvalの記述方法は見つかるのですが、 単純にsubプロシージャを実行したいだけなのです。 フォームの中に記述しても良いのですが、結構長くなって しまうので・・。 こういうやり方はおかしいのでしょうか。

  • ユーザーフォームに最小化・最大化ボタンを付ける

    http://www.serpress.co.jp/excel/vba047.html を参考にエクセルのユーザーフォームに 最小化、最大化ボタンを付けたいのですがうまく出来ません。 バージョンは2003です。 リンク先の「作成するモジュール」の中身を標準モジュールにコピペしたら 「vbModeless」が「プロシージャの外では無効です。」になります。 なので、全てをフォームモジュールに貼り付けると Public Constがエラーになるので Public Constだけ標準モジュールに貼り付けました。 でもフォームモジュールでも 「vbModeless」 が「プロシージャの外では無効です。」になります。 なにを標準モジュールにはりつけて 何をフォームモジュールにはりつければいいか教えてください。

  • EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作り

    EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作りました。そのワークシート上での定数や、プロシージャや関数をワークシートのモジュールに置いています。そして、その定数や関数などをユーザーフォームのイニシャライズなどで使いたいと思いますが、ユーザーフォームのモジュールはワークシートのモジュールとは別なので、使えません。他への影響を考えると、標準モジュールには、置くのは不適切だと思います。 特定のワークシート上でのみ使うユーザーフォームと、そのワークシートとで、共通の定数や関数などを使う方法は、あるのでしょうか。どのようにすればよいのでしょうか。

  • subプロシージャーは標準モジュールではなくフォームのコードを書く部分

    subプロシージャーは標準モジュールではなくフォームのコードを書く部分に書いても問題ないのでしょうか? エクセルにVBAでフォームを挿入し、 「Private Sub UserForm_Initialize()」 などのフォームのモジュールに、 Sub test() MsgBox "あああ" End Sub という標準モジュールに書くべきのsubプロシージャーを書いてもなにもエラーにならないし正常に動きます。 subプロシージャーは標準モジュールではなくフォームのコードを書く部分に書いても問題ないのでしょうか? それともエラーにならなくても標準モジュールに書いた方がいいですか?

  • アクセス イベントプロシージャーを記述する場所。

    アクセス初心者です。表題の件です。アクセスクラブを参考にしながら管理簿を作成しています。SampleFile184を見ながら作っているのですが、イベントプロシージャーを記述する場所が分かりません。カレンダーコントロールを貼り付けたフォームに以下のようなプロシージャーを記述します。とありますが、どこから入って記述すればいいのでしょうか?フォームヘッダーをクリックしてデザインから開いて、クリック時のとこでしょうか?それともモジュールを開いて書いていけばいいのでしょうか?初心者の質問ですみません。困っています。わかる方がいましたら、ご教授ください。よろしくお願い致します。

  • エクセルVBAのユーザーフォーム

    こんばんは、エクセルVBAでユーザーフォームを作成しました。 そこに入力したものがブックに反映するわけですが、フォームに0(ゼロ)を入力した場合、ブック上のセルを選択すると0と入っているのですが、表示されません。なぜでしょう???? これができないとせっかく時間をかけて作ったのに、使えません。どなたかご存知の方よろしくお願いします!!!!

  • VBAのクラスのインスタンス化のタイミングについて

    こんにちはvbaのクラスのインスタンス化について質問があります。 私は普段使えないイベントを使用するときにクラスモジュールに WithEventsを使ってイベントを作成し それをプロシージャからインスタンス化して 作成したイベントを有効にするという手法をよく使います。 Excelのように最初からワークブックにイベントがある場合は、 ワークブックを開いたと同時にWorkbook_Openプロシージャから クラスをインスタンス化して作成したイベントを有効にするということが可能なのですが、 CATIAやInventorなど、一部のアプリケーションでは、 最初から使えるイベントが見つからず、 Subプロシージャでインスタンス化する方法しかみつかりません。 しかし、Subプロシージャを実行させるためには、 ボタンなどユーザー側に何らかのアクションとってもらうしかなく、 自動化するために作成したイベントなのに、そのイベントを有効にするために ユーザーにボタンを押してもらうという矛盾した構成になってしまいます。 クラスをインスタンス化する方法はSubプロシージャに記述するしかないのでしょうか? 自分がよく使っているコードを下に記述します。 下の例は、Excelで新しくブックを開いたときにメッセージを出すプログラムです。 アプリケーションレベルのイベントをクラスモジュールで作成しています。 これを有効にするためには標準モジュール内の Event_ONプロシージャを実行しなければなりません。 モジュールを実行する前まではいくら新しいブックを開いてもメッセージは出ません これをどのうようにしたらいいかご教授ください。 Excelの例 Classモジュール「Class1」に記述 -------------------------------------------------------------------- Private WithEvents APP As Application Private Sub APP_NewWorkbook(ByVal Wb As Workbook) MsgBox "新しいブックが開かれました" End Sub Private Sub Class_Initialize() Set APP = Application End Sub -------------------------------------------------------------------- 標準モジュール「Module1」に記述 -------------------------------------------------------------------- Dim CLS As class1 Public Sub Event_ON() Set CLS = New class1 End Sub --------------------------------------------------------------------

専門家に質問してみよう