Excelが動作後、ラン状態?

このQ&Aのポイント
  • Excelでsheet1の上に、処理開始コマンドを作成し、それを押すとUserForm1が表示され、入力値に従ってデータ処理が分岐実行されます。処理結果は正常ですが、UserForm1が表示されている間、Excelが反応しない状態になります。UserForm1のコマンド処理中にUserForm1.Hideを追加した時には問題が解消されました。
  • Excelのsheet1上に処理開始コマンドを作成し、それを押すとUserForm1が表示されます。UserForm1にはデータ入力があり、その値に基づいてデータ処理が行われます。処理結果は正常ですが、UserForm1が表示されている間、Excelが反応しない状態になります。UserForm1のコマンド処理中にUserForm1.Hideを追加することで、問題を解消することができました。
  • Excelのsheet1上に処理開始コマンドを作成し、それを押すとUserForm1が表示されます。UserForm1にはデータ入力があり、その値に応じてデータ処理が行われます。処理結果は問題なく表示されますが、UserForm1が表示されている間、Excelが反応しない状態になります。後からUserForm1.Hideを追加したことで、この状態を解消できました。
回答を見る
  • ベストアンサー

Excelが動作後、ラン状態?

Excelが動作後、ラン状態? Excel でsheet1の上に、コントロールツールボックスで、処理開始コマンドというのを 作成し、それを押すと(既に作成してある)UserForm1を表示し、そのテキスト入力の値に従ってデータ処理が分岐実行されsheet1に結果が表示されるというようにしました。 データ処理結果はOKなのですが、実行後UserForm1が表示されている間、Excelに対してラン状態のような感じで、どんなキーもカーソル動作も、クリックもきかない状態となっており、そこで後から下記の(UserForm1)のコマンド処理中にUserForm1.Hideを入れたら異常状態はクリアされたのですが、何かそれなりの理由が立つのなら教えていただきたい。 (sheet1) Private Sub CommandButton1_Click() UserForm1.Show End Sub (UserForm1) Private Sub CommandButton1_Click() Dim syorishitei As Integer Dim AA As Integer syorishitei = UserForm1.TextBox1.Value   この途中はいろいろあるが略します。 Call check200 UserForm1.Hide  ‘←ここを後から追加 End Sub

  • taktta
  • お礼率72% (1031/1430)

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.1

こんにちは。 UserFormをshowするときに引数を省略すると、 引数に、vbModalを指定したことになり、 UserformをUnloadするか、Hideにしない限り、 主導権はUserformにありますので Sheetを操作することはできません。 UserFormを表示したままSheetも操作したいのであれば (sheet1) Private Sub CommandButton1_Click()   UserForm1.Show vbModeless End Sub このように引数vbModelessを指定します。 以上です。    

taktta
質問者

お礼

おかげで解決しました。どうもありがとうございました。

taktta
質問者

補足

るFormから別のFormを呼び出すサンプル [構文] FormName.Show vbModal [説明] FormNameとはフォームの名前です。 vbModalは開いたウィンドウを閉じるまで 他のウィンドウを操作できないようにする コマンドです。これは省略可能で、省略す ると開いたウィンドウを閉じなくても他の ウィンドウを操作することができます。 http://tiethlab.hp.infoseek.co.jp/vbtech/formsample.html 上記でいっていることは、間違いなのですね。

関連するQ&A

  • 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

    VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、   コマンドボタン1→ユーザーフォーム1を表示   コマンドボタン2→ユーザーフォーム2を表示   コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。  そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。   どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub

  • 値渡しについて

    UserForm1で以下のように求めた値「R」を UserForm2に渡すにはどのようにすればよいのでしょうか。 **************************************** <UserForm1(コード)> Public R As Integer ----------------------------------- Private Sub CommandButton1_Click()    Dim N As Integer        :    N = TextBox1.Text    R= N * 2 + 3        : End Sub **************************************** <UserForm2(コード)> Private Sub CommandButton1_Click()   Dim i As Integer       :   For i = 4 To R       :   Next i       : End Sub **************************************** どなたか教えて下さい。

  • エクセル2010のユーザーフォーム記述について。

    エクセル2010でセルのコピーペーストの質問です。次のような記述がユーザーフォームにあります。これだと、なぜか貼り付け先のセルのすぐ上のセルの条件付き書式まで貼り付け先に貼り付けられてしまいます。 どのような記述をすれば不具合を解消できますか。 Private Sub CommandButton1_Click() Selection.PasteSpecial Paste:=xlPasteAllExceptBorders Selection.PasteSpecial Paste:=xlPasteValues UserForm1.Hide End Sub Private Sub CommandButton2_Click() UserForm1.Hide End Sub

  • VBAのCallステートメントについて

    ExcelのSheet1にCommandButton1(表示)があります。 -------------------------------------------------- Private Sub 表示_Click() (DBより表示処理) End Sub -------------------------------------------------- UserForm1にCommandButton1(登録)があります。 -------------------------------------------------- Private Sub 登録_Click() (DBへの登録処理) UserForm1.Hide Call WorkSheets("Sheet1").表示_Click() ・・・☆ Exit Sub End Sub -------------------------------------------------- 表記のようなプログラムにしたところ、☆印のところで、 下記エラーが表示されてしまいます。 【エラー】--------------------------------------------------- 実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません。 ------------------------------------------------------------- どのようにしたらCallステートメントで表示_Clickを呼び出すことが できるのでしょうか。

  • EXCEL VBAのユーザーフォームに引数を渡す方法について

    すいません、EXCEL VBAのユーザーフォームに引数を渡す方法についてご質問があります。 シート上にコマンドボタンを2つ用意する。 コマンドボタン1を押すと変数mは1 コマンドボタン2を押すと変数mは2 としてユーザーフォームを呼び出す。 Public m As Integer Private Sub CommandButton1_Click()  m = 1  Call フォーム呼び出し(m) End Sub Private Sub CommandButton2_Click()  m = 2  Call フォーム呼び出し(m) End Sub Sub フォーム呼び出し(m As Integer)  UserForm1.Show End Sub 次にユーザフォームにコマンドボタンを1個置き、 ボタンを押したとき、mが1であれば「ボタン1」 mが2であれば「ボタン2」 とメッセージボックスを出し、ユーザーフォームを閉じる。 Private Sub CommandButton1_Click()   If m = 1 Then    MsgBox "ボタン2"   ElseIf m = 2 Then    MsgBox "ボタン2"   End If  Unload UserForm1 End Sub プロシージャ間の引数渡しは色々なテキストに載っているのですが ユーザーフォームに引数を渡す方法はどうも見つからず、 Private Sub CommandButton1_Click(m) としても、コンパイルエラーとなってしまいます。 よろしくご教示をお願いいたします。

  • ユーザーフォームにての記述を教えて下さい

    エクセル2010で「値のみコピー」だけでなく「値と文字色のみコピー」のユーザーフォームにての記述を教えて下さい。 ちなみに「値のみコピー」のユーザーフォームにての記述は次のとおりです。 これをどう加工したらいいでしょうか。 Private Sub CommandButton1_Click() Selection.PasteSpecial Paste:=xlPasteValues UserForm1.Hide End Sub Private Sub CommandButton2_Click() UserForm1.Hide End Sub

  • Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。

    VBA初心者です。(おそらく)基本的な質問で、申し訳ありません。 ユーザーフォーム1には、テキストボックス1とコマンドボタン1が配置されているとします。 Sub TEST () Dim N Userform1.Show MsgBox N End Sub Private Sub CommandButton1_Click() Dim N N = TextBox1.Text UserForm1.Hide End Sub Sub TESTを実行した時に、ユーザーフォーム1からNの値を引き継ぐには、どうしたら良いのでしょうか?よろしくお願いします。

  • ユーザーフォームの切り替えについて・・・

    UserForm1とUserForm2の2つのユーザーフォームがあります。 UserForm1の中にあるcommandButton1をクリックすると、UserForm2が表示される仕組みになっています。 (ちなみに、UserForm2にもコマンドボタンがあり、クリックするとUserForm1に戻るようになっています) UserForm1の方に、 Private Sub CommandButton1_Click() UserForm2.Show 0 Unload UserForm1 End Sub UserForm2の方に、 Private Sub CommandButton1_Click() UserForm1.Show 0 Unload UserForm2 End Sub と記述してあります。 ところが、それぞれのユーザーフォームには、閉じると同時にブックが閉じるように Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ActiveWorkbook.Save 'ブックを保存 ActiveWorkbook.Close 'ブックを閉じる Application.Quit 'excelを終了 End If End Sub というコードを記述しているため、UserForm1からUserForm2へ移るときにブックが閉じてしまいます。 右上の「×」を押したときだけブックを閉じるようにしたいのですが、どういうコードを書いたらいいのですか? 宜しくお願いします。(*´Д`人)

  • エクセルVBAで

    CommandButton2がクリックされた時に、 すでに表示されているUserForm1を消したいのですが、 Private Sub CommandButton2_Click() UserForm1.(  ) End Sub (  )にくる言葉は何でしょうか?

  • VBA:助けてください。呼び出してもいないのに独立なプロシージャへ、処理が飛んでしまう。アドバイスお願い致します。

    Useform1のコマンドボタンをクリックすると Private Sub CommandButton1_Click() Call 処理 End Sub というように、「処理」を呼び出し。これで終わるようにしていました。しかし、不具合が出てしまい、ステップインで見てみると「処理」からEndSubに行き、その後Useform2のコマンドボタンイベントのEnd Withへ Private Sub CommandButton1_Click() With Userform1 .... End With ←    ・・・ End Sub 上のように矢印の部分へ飛んでしまいます。全く、独立な、コマンドイベントへ飛んで処理されているのです。それも、飛んだ箇所がEnd Withからです。こんなことがあるのでしょうか? Private Sub CommandButton1_Click() Call 処理 Exit Sub End Sub 上のようにExit Subを追加してもやはりそこから飛んでしまいます。 なぜでしょうか?詳しい方アドバイスお願い致します。

専門家に質問してみよう