- 締切済み
ユーザーフォームのVBAエラー
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
Initialize、及びTerminateは、クラスのインスタンス化、及び解放の時に呼び出されるイベントです。 つまり今回の場合は、UserFormを利用しようとした瞬間にInitializeイベントが走行し、 利用をやめた時にTerminateイベントが走行します。 Private Sub Hoge() Dim f As UserForm1 Set f = New UserForm1 ' このタイミングでInitializeが走行 Set f = Nothing ' このタイミングでTerminateが走行 End Sub 通常、メソッドを定義する際、クラス名(今回の場合はUserForm)をメソッド名に 利用しません。 メソッド名は、処理内容を一目で分かる名称にします。 Private Sub UserForm_Initialize() createComboItems() End Sub Private Sub createComboItems() With ComboBox1 .AddItem "振込" ・ ・ ・ End Sub のように。
- mt2008
- ベストアンサー率52% (885/1701)
ちょっと補足 Private Sub UserForm_Initialize() は、このユーザフォームを表示する前に実行されるイベントプロシージャです。 2つめのUserForm_Initializeを「UserForm_Initialize2」の様に名前を変えると、コンパイルエラーは出なくなりますが、イベントプロシージャではなくなりますので自動的に実行はされません。 どうしても「UserForm_Initialize2」の様にして、表示前に実行したいなら、UserForm_Initialize の中で「UserForm_Initialize2」をcallしてやる必要があります。
お礼
あの手この手で色々試しました 何かわからなくなりました。 挿入 USERFORM を追加していじくっいるうちに警告は出なくなりました。 ただ 実行のコマンドボタンをクリックしUSERFORMでデーターを入力してシートには反映されなくなりました。 再度別に質問したいと思います。 ご協力ご指導ありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
UserForm_Initialize が2つも有ったらそうなるでしょう。 1つにまとめれば済む話です。
- kool_noah
- ベストアンサー率33% (95/285)
上にも同じ名前があるのでかぶってるから、どっちの事行ってるのかわからんって事でPCが困ってます 名前を変えてあげる必要がありますね。 違ってさえいれば何でもいいです UserFormer_Initilize2でも ただ、あとで見返したときや、他で使いたいときにあれ?あっちって1だっけ?2だっけ?ってなるので、わかりやすい名前にした方がいいですよね。 その処理はコンボボックスの月の初期化であれば month_combo_initializeとか
お礼
あの手この手で色々試しました 何かわからなくなりました。 挿入 USERFORM を追加していじくっいるうちに警告は出なくなりました。 ただ 実行のコマンドボタンをクリックしUSERFORMでデーターを入力してシートには反映されなくなりました。 再度別に質問したいと思います。 ご協力ご指導ありがとうございました。
お礼
あの手この手で色々試しました 何かわからなくなりました。 挿入 USERFORM を追加していじくっいるうちに警告は出なくなりました。 ただ 実行のコマンドボタンをクリックしUSERFORMでデーターを入力してシートには反映されなくなりました。 再度別に質問したいと思います。 ご協力ご指導ありがとうございました。