• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA UserFormで困っています。)

EXCEL VBA UserFormで起動エラーが発生する理由と解決方法

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

リンク先のアドバイスを書いた本人です。 確か、その時のアドバイスは、開いて直(ダイレクト)に、UserForm を操作したり、ダイレクトで、UserForm でクローズと共にBook をクローズすると、ハングしてしまうということで、時間差を付けるというのを考えました。Excel本体のメモリの割り付けとUserForm のメモリの割り付けとインスタンスの設定を同時にすることが問題になっているようです。 もともと、アプリケーションの本体を表示せずに、UserForm だけを独立させて表示させるのは、無理があるのではないかと思います。富士通のFOMの教本のサンプルには出ていましたが、私はかねがね疑問に感じていました。 以下のコードも、当然は、危ないコードです。 UserForm のほうは、元に戻していないのですか?「EXCEL VBA UserFormで困っています。」のご質問者さんも、ダイレクトで行っていたようです。 >Private Sub CommandButton14_Click() >y = MsgBox("終了します。よろしいですか?", vbYesNo) >If y = vbYes Then >  Application.DisplayAlerts = False >  ThisWorkbook.save >  ThisWorkbook.Close >End If >End Sub Private Sub CommandButton14_Click() If MsgBox("終了します。よろしいですか?", vbYesNo) = vbYes Then   Unload Me   Application.DisplayAlerts = False   If ThisWorkbook.Saved = False Then    ThisWorkbook.Close True   End If End If End Sub 無理なコードは書かないことに尽きます。そういう私自身、最近PCのせいなのか、UserForm をAPIで最小化させて、ずっと出しっぱなしにしていることがありますが、どうやら、メモリ・リークがあるようです。PCが極端に動かなくなります。ExcelをQuit すれば、元に戻ります。 >自動保存機能 私は、一応、これは外しています。自動保存と、マクロがぶつかる時があり、マクロに支障が出ます。こちらでは、独自のバックアップシステムをマクロで作っています。

59635963
質問者

お礼

回答ありがとうございます。 保存+終了の処理を、ご教授頂いた上記のコードに変更してみましたが、現象は改善されません。 menuというフォームから、コマンドボタンを押すとUserform1が立ち上がる、というマクロなんですが、コマンドボタンを押すとuserform1が立ち上がる前に「問題が発生したため...」というエラーが出てしまいます。 ステップモードで実行すると問題なく動作し、その状態で一度動作させると、次に保存+終了処理をしてブックを閉じるまでは正常動作しています。 しかし、menuフォームから保存+終了処理をしてブックを閉じると、次に開いたときにまた最初に逆戻りしてしまいます。 一応、一連の動作中に実行されるコードを以下に記載しておきます。 以下のコード内において、ご指摘の「ダイレクトなuserformの操作」箇所はありますでしょうか。 宜しくお願い致します。 'menuフォーム上のコマンドボタン(押すとuserform1が立ち上がる) Private Sub CommandButton15_Click() UserForm1.CommandButton6.Visible = False UserForm1.CommandButton7.Visible = False UserForm1.CommandButton8.Visible = False UserForm1.CommandButton9.Visible = False UserForm1.CommandButton10.Visible = False UserForm1.Label10.Visible = True UserForm1.Label18.Visible = True UserForm1.Label199.Visible = False UserForm1.Label197.Visible = False UserForm1.Label198.Visible = False UserForm1.Label200.Visible = False UserForm1.Label201.Visible = False UserForm1.Label217.Visible = False UserForm1.Label195.Visible = True UserForm1.Label218.Visible = False UserForm1.Label219.Visible = False UserForm1.Label112.Visible = True UserForm1.Label214.Visible = True UserForm1.Label220.Visible = False UserForm1.MultiPage1.Value = 0 UserForm1.Show End Sub 'Userform1のコンボボックスリストを作成 Private Sub UserForm_Initialize() '基本情報タブ Dim MaxRow As Long MaxRow = Sheets("取引先DB").Cells(Rows.Count, 1).End(xlUp).Row combocnt = 2 Sheets("取引先DB").Select Do Until combocnt = MaxRow + 1 combolist = Sheets("取引先DB").Range("B" & combocnt).Value UserForm1.ComboBox70.AddItem combolist combocnt = combocnt + 1 Loop sheets("sheet1").select end sub

関連するQ&A

  • EXCEL VBA UserFormで困っています。

    現在VBAで業務用のシステムを開発しているのですが以下のような現象が起こります。 開発環境  WinXP , EXCEL2000 現象(1) 起動すると『問題が発生したため、  Microsoft Excel Windowsを終了します。・・・ エラー報告を送信する 送信しない』のメッセージが出て起動できない。 UserForm.Showのステップで一旦止めてステップモードで続行すると正常に動作します。 現象(2) WinXP , EXCEL2000で正常に動作するものを WinXP , EXCEL2003で起動すると『パス名が無効です』のメッセージが出て起動しません。 (1)と同様にUserForm.Showのステップで一旦止めてステップモードで続行すると正常に動作します。 2点とも UserForm.Show のステップに問題があると思うのですが、自分なりに半月かけて調査しても何の解決の糸口も見つからずに困り果てています。 もし、ご存知でしたらご教示願えないでしょうか?

  • Visual BasicのUserFormが閉じづらい

    Excel2000,VisualBasicのUserFormの閉じ方で困っています。 マクロ起動中にUserForm1.Show,UserForm1.Hide,UserForm2.Show,UserForm2.Hideを 何度も繰り返していると、同じUserFormが重複してメモリーに残っている 状態で、閉じるために「×」を何度もクリックしています。 作業を長時間するとフリーズ状態もしくはエラーになります。 尚、Load.Unloadでも同じ結果になりました。 どなたか解決方法を教えてください、宜しくお願いします。

  • EXCEL VBA UserFormで困っています。

    WindowsXP,EXCEL2000を使用しています。 VBA Userform で Fontでポイント数を指定しラベルやテキストボックスを作成します。 作成したオブジェクトをCopyして貼り付けると文字の大きさが変わってしまうことがあります。 Fontのポイント数を確認しても正しく設定されています。 この現象が発生したオブジェクトは削除して作成し直してみても変えることが出来ません。何故でしょうか? 教えてください。

  • Excel VBAについて

    Excel VBAにおいて、Sheetの選択した行によって値を表示するUserFormを変更したいと思っています。 現在以下のようにしたのですが、実行すると「SubまたはFunctionが定義されていません」というエラーが表示されます。 「Controls("UserForm" & x).Label1.Caption =」のところをどのようにしたらよいのでしょうか。 Private Sub CommandButton1_Click()   If ActiveCell.Row = 5 Then     UserForm1.Show     x = 1   ElseIf ActiveCell.Row = 6 Then     UserForm2.Show     x = 2   End If End Sub Private Sub Worksheet_Selection Change(Byval Target As Range)   Controls("UserForm" & x).Label1.Caption = ・・・

  • ExcelのVBAでフォームが表示されない

    Sub フォーム起動() UserForm1.Show End Sub 上記の内容をModule1にしてショートカットキーをを設定し、いつでも他に作ってあるユーザーフォームが起動するようにしていました。しかし先日、久しぶりに使ってみようと、設定したショートカットキーを押したら、VBAもマクロも全くいじっていないにも関わらず、「UserForm1.Show」の部分で「実行時エラー'380': Valueプロパティを設定できません。プロパティの値が無効です。」とエラーが表示されフォームが起動できません。これはいったい何が原因なのでしょうか。

  • エクセルVBAでUserFormを起動した時

    エクセルVBAでUserFormを起動した時に自動的に実行される動作を記述したいのですが、 どうすればよいでしょうか? Private Sub UserForm1_Load() End Sub だとだめでしょうか?

  • Excel vbaでフォームの起動が失敗する

    Excelシート上に設置したユーザフォームを開くボタンを実行するとフォームが開かずに新規のExcelシートが開いてしまいます。 以前までは正常に作動していたんですが••• ちなみにボタンの実行前に vbaの編集画面を一度でも開いた後はボタンを押したら正常にフォームが開くんです。 フォームを開くコード sub 起動() UserForm1.Show End Sub フォームのInitializeはコンボボックスのみです。 原因がわかりましでしょうか?

  • Personal.xlsでUserFormを開く

    Personal.xlsに登録したマクロでBookのUserFormを開くには? 環境:EXCEL2000 Windows7 Book1.xlsにUserForm1を作りました。 Book2.xlsにもUserForm1を作りました。 (Book1のUserForm1とBook2のUserForm1は異なるForm) Personal.xlsに次のSubを追加しました Public Sub DispForm1() ActiveWorkbook.UserForm1.Show vbModeless End Sub ツールバーに釦を追加しマクロ「DispForm1」を登録しました やりたい事 (1)Book1を開き釦を押すとBook1のUserForm1を表示する (2)Book2を開き釦を押すとBook2のUserForm1を表示する 問題点 釦を押すと 「オブジェクトは、このプロパティまたはメソッドをサポートしていません」 のエラーがでる アドバイスよろしくお願いいたします。

  • Userformの起動制限について

    シート上のコマンドボタンにより Userform1.showを実行する場合 Userform1のUserForm_Initialize() の初期設定において 特定の条件を満たした場合はUseform1を表示して、 条件を満たさない場合はUserform1を表示せず元に戻る というようなことはできないでしょうか?

  • エクセル UserForm 呼び出しでフリーズしてしまいます

    エクセルでタイムカード?退勤時間管理表を作成しています。 UserFormの使用は初めてです・・・ UserForm1が「出勤」「退勤」「休憩入り・戻り」などをボタンで作って入力させるのはうまくいきました。 ところが、UserForm2に、各従業員のタイムカード(出勤退勤休憩を記録しているシート部分)を表示したくなったのでUserForm2に、ListBox1を貼り付けてマクロでRowSourceを書き換えて表示させたかったのですが・・・ 作成中はうまく表示しているのですが、実際にUserForm2.Showとやって呼び出すとUserForm2は表示されるのですが、エクセルすべてが全く反応なくなってしまいます。UserForm2も閉じれません。 ListBox1でいじったプロパティは、RowSourceとColumnCountのみです。 RowSourceは、'名 前'!A1:H32 ColumnCountは、8 UserForm2には、ListBox1しかありません。 UserForm1にも、ListBoxはあるのですが全く問題なしです。(1行のみのものですが) 時計のリアルタイム表示マクロやUserFormに最小化ボタンを付けるマクロを付けていたのでそれが原因かとも思い削除してみたのですが、UserForm2を表示するとフリーズしてしまいます。 何が原因のでしょうか? 教えてください。よろしくお願いします。 エクセルは、2007です。