• ベストアンサー

Excel97マクロのUserForm

Excel97でUserFormを表示して 消すのにUnloadでは消えてくれません UserForm.show 処理1 処理2 unload UserForm としているのですが、なぜかUserForm.showで 止まったまま制御が流れません ちょっと教えていただけるとうれしいです

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

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

>止まったまま制御が流れません。 Excel97ですよね。 Excel97ではUserForm.show でUserFormは常にモーダルで開いています。同じアプリの他に制御を移す場合は、何か応答する必要があります。(Excel2000で変わった?) シートのメニューから色々なダイアログボックスを開くと、OKやキャンセルを押してダイアログボックスを消さないと次の処理ができないのと同じです。 UserForm.show を Msgbox "メッセージ表示中",vbokonly と変えてみると何が起きているか分かり易くないですか。入力待ちになってますよね。 色々な対応が可能でしょうが、UserForm_Activateで継続させる例です。(UserFormのコードウインドウ) Private Sub UserForm_Activate()   '処理1例   Worksheets("Sheet1").Range("A1:A3") = "テスト設定1"   '処理2例   Worksheets("Sheet1").Range("A5:A8") = "テスト設定2"   MsgBox "(例)フォームを消しますよ"   Unload Me 'Me.Hide   MsgBox "(例)フォームを消しました" End Sub

その他の回答 (1)

  • qhk
  • ベストアンサー率21% (3/14)
回答No.1

unload me では駄目ですか?

関連するQ&A

  • エクセルのマクロでUserForm1を作って下記のようなコードを実行す

    エクセルのマクロでUserForm1を作って下記のようなコードを実行すると UserForm1を一瞬だけ表示して消えるのかと思ったのですが、表示されたまま消えません。 Unload UserForm1のところを UserForm1.Hideにしても同じです。 表示されたUserForm1を閉じるにはどうしたらよいですか。 Sub test() UserForm1.Show Unload UserForm1 End Sub

  • バックアップするとuserformが使えない

    ユーザーフォームを設定した後で、次のプログラムを起動するとユーザーフォームを開こうとしても「パスが無効です」とでて使えなくなります。 Public Sub test() UserForm3.Show ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\バックアップ\" & ActiveWorkbook.Name UserForm2.Show Unload UserForm3 Unload UserForm2 End Sub また、プログラム中にシステムエラーとでたり、「オブジェクトが見つかりません」とでたりします。 いったいなぜなのか。どうすれば回避できるのか教えてください。お願いします ちなみにプログラムを実行するときはエクセルファイルと同じ階層に「バックアップ」というフォルダを作ってください。 このプログラムを実行した後は保存しないことをお勧めします。 ユーザーフォームが起動できなくなっても責任はとれません。 エクセルは2000 です。

  • ExcelVBAで指定外のUserFormを閉じる

    複数のUserFormを表示させた時に、 コードで指定したUserForm以外のUserFormを閉じる方法を教えてください。 Unload UserForm1、Unload UserForm2、Unload UserForm3 このような方法では、手間がかかってしまいます。 何か良い方法がありましたら教えてください。 宜しくお願いします。

  • Visual BasicのUserFormが閉じづらい

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

  • アクセスからエクセルのUserForm1を表示させたい

    オフィス2003です。 アクセスのフォーム上にコマンドボタンを置き、 クリックイベントでエクセル上に作成してある UserForm1を表示させたいです。 案の定 Sub CB_Click() Excel.UserForm1.Show End Sub ではだめでした。 どういう方法がありますか? よろしくお願いします。

  • エクセル 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です。

  • userform1の終了に同期を取りたい。

    ユーザーフォームを勉強し始めました。 標準モジュールに、 sub oya() userform1.show end sub として、userform1を表示しています。 そしてuserform1で、諸々の設定をしています。 oyaでは、この設定を使って作業をします。 ここで質問です。 oyaの作業は、userform1で設定した内容を使うため、 処理が終わるのを待つ必要がありますが、 その書き方が分かりません。 今現在は、単純にuserform1.showの下に処理を書いているので、 設定する前に空欄を使うような状況になってしまっています。 sub oya() userform1.show  処理ロジック end sub 分かりにくいでしょうが、 宜しくご指導下さい。

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

    EXCEL VBA UserFormで困っています。 VBAプログラミングで以下のような現象が起こります。 開発環境  WinXP , EXCEL2003 ブックを起動するとメニューが表示され、そこからボタンを押すとuserform1が表示されるというプログラムなんですが、そのボタンを押してuserform1を起動しようとすると『問題が発生したため、  Microsoft Excel Windowsを終了します。・・・ エラー報告を送信する 送信しない』のメッセージが出て起動できない。 UserForm1.Showのステップで一旦止めてステップモードで続行すると正常に動作します。 過去に似た質問を見つけ、そのアドバイスを元に以下を試してみました。 http://okwave.jp/qa/q2001805.html ・エラーの発生行の特定 userform1.showの前に、userform1.label.visible=falseのように、表示、非表示を切り替える命令を出しており、どうやらその表示命令の行でつまづいている事がわかりました。 表示命令を全て消去し実行したところ、現在までは問題なく起動できています。 ・on timeメソッドで時間差をつける ラベルやボタンの表示、非表示命令行をまとめて、 Application.OnTime Now + TimeValue("00:00:01"), "ラベルボタン表示設定" userform1.show といった形で時間差をつけてみました。 結果として、userform1自体は立ち上がるようになったのですが、時間差で実行される"ラベルボタン表示設定"の実行時に「オートメーションエラーです。起動されたオブジェクトはクライアントから切断されました。」と出てくるようになってしまいました。 ラベルはまだ良いのですが、コマンドボタンの表示、非表示は、誤操作を防ぐ手段として非常に重要です。なんとかエラーを出さずにコード通りに起動する方法はありませんでしょうか。

  • Excel 2007 マクロについて

    初心者なりに試行錯誤しながら、チャレンジしています。 B1セルには日付が入力されています。 B1をダブルクリックしたときにUserForm1のTextBox1にその 日付を表示したいのですが上手くいきません。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("B1:B15")) Is Nothing Then Exit Sub Cancel = True UserForm1.Show UserForm1.TextBox1.Value = Target.Value Unload UserForm1 End Sub どこをどのように修正したらよろしいでしょうか?

  • ユーザーフォーム 背景に色が付かない。

    前処理が済んだ時点でuserformを表示し、 本処理に入る方法を教えていただきました。 そして以下のようにコーディングしました。 Sub userformd() 前処理 UserForm1.Show vbModeless 本処理 Unload UserForm1 End Sub 思った通り処理が出来たのですが、 背景に色を付けてみようと、以下のように手を加えたのですが、 色が付きません。 原因と対応法をお教え下さい。 Sub userformd() 前処理 UserForm1.BackColor = RGB(255, 0, 0) UserForm1.Show vbModeless 本処理 Unload UserForm1 End Sub 宜しくお願いします。

専門家に質問してみよう