ExcelVBAでユーザーフォームが勝手に閉じてしまう問題の解決方法

このQ&Aのポイント
  • ExcelVBAを独学で始めて2週間足らずの超初心者が、ユーザーフォームが勝手に閉じてしまう問題に困っています。
  • Excelワークシートに配置したコマンドボタンを押すとユーザーフォーム1が開き、リストボックスから選択するとユーザーフォーム2が開くように設定しています。
  • しかし、ユーザーフォーム1のリストを選択した瞬間にユーザーフォーム1が勝手に閉じてしまいます。どうすればユーザーフォーム1を閉じないようにすることができるでしょうか。
回答を見る
  • ベストアンサー

ExcelVBAでユーザーフォームが勝手に閉じてしまいます。

ExcelVBAでユーザーフォームが勝手に閉じてしまいます。 ExcelVBAを独学で始めてまだ2週間足らずの超初心者です。 Excelワークシートにコマンドボタン配置してそのコマンドボタンを押すとユーザーフォーム1が開き、ユーザーフォーム1に配置してあるリストボックスからリストをダブルクリックで選択すると、ユーザーフォーム2が開くように設定しています。ただ、ユーザーフォーム1のリストをダブルクリックして選択した時点でユーザーフォーム1が勝手に閉じてしまいます。ユーザーフォーム1を勝手に閉じさせないでコマンドボタンで閉じるようにしたいのですがどうしたらよいのでしょうか。レベルの低い質問かもしれませんが困っています。宜しくお願い致します。

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

  • ベストアンサー
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

ユーザーフォーム1が閉じられているのか隠れているのか よく分かりませんが、 ユーザーフォーム2をモーダル表示すれば大丈夫だと思います。 ユーザーフォーム2のShowModalプロパティをtrueにする。 リストボックスのダブルクリック時にShowメソッド実行(モーダル表示)。

lanbee
質問者

お礼

早速の回答ありがとうございます。 解決致しました。単純なことだったのですね。お手をわずらわせてすいません。 ありがとうございました。

関連するQ&A

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

    現在、ワークシートの内容を見やすくするためにユーザーフォームを使用し表示させています。印刷は、ユーザーフォームにコマンドボタンを配置し、ワークシートを印刷しています。 せっかくユーザーフォームで見やすいレイアウトにしているので、表示させた内容をユーザーフォームごと印刷できればと考えています。 画面のハードコピーとかではなくて、コマンドボタンをクリックすることで印刷したいのですが、どなたか教えてください。

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • ExcelVBAでユーザーフォーム内のリストボックスの設定について

     教えてください、ExcelVBAでユーザーフォーム内にリストボックスを作りました。 複数列・複数行のワークシートデータを参照する設定です。  列は12列で、一番左の列に番号をふってあります。  行は31行で、一行目がタイトル表示してあります。  質問なのですが、このリストボックスは全列・全行表示する大きさでユーザーフォーム内に作成してあるのですが、いざマクロを動かすと幅は問題ないんですが、高さが縮んで自動的にスクロールが表示されます。  ユーザーフォームを大きくしてリストボックスも大きくしてやっても同じです。 このリストボックスの高さを固定させる設定はどうすれば良いでしょうか。

  • ExcelVBAのユーザーフォームについて

    ExcelVBAのユーザーフォームについて ExcelVBAをゼロから独学で学んでる超初心者です。 ExcelVBAでデータベースを作っています。sheet1に配置してあるコマンドボタンでuserform1を開きそこに配置してあるlistbox1を選択するとuserform2~Xが開く設定にしています。 listbox1の内容はsheet2のデータのタイトルA~X(2列目~X列目)を読みに行っています。 userform2~Xの内容はsheet2のデータのタイトルA~Xのの内容を個別に作成しています。 流れはタイトルA(userform1-listbox1(1列目))を選択するとタイトルAの内容を表示(userform2)するというものです。userform2~Xはsheet2の上から順番に作っています。 sheet2の2列目の内容(タイトルA)→userform2 sheet2の3列目の内容(タイトルB)→userform3 という感じです。この状態だと問題なく開いていくのですが。このデータベースは後からタイトルをどんどん増やしていきます。そして、増やすたびにあいうえお順に並び替えをします。 そうすることによってタイトルと内容が合わなくなっていきます。例えば、 sheet2の2列目の内容が5列目(タイトルD)の内容に変更 sheet2の3列目の内容が2列目(タイトルA)の内容に変更 みたいな感じでバラバラになってしまいます。 流れがタイトルD(userform1-listbox1(1列目))を選択→タイトルA(userform2)を表示となってしまいます。 並び替えを行ってもタイトルとuserformがセットになる タイトルD(userform1-listbox1(1列目))を選択→タイトルD(userform4)を表示 となる様にするにはどうしたらよいのでしょうか? へたくそな説明でわかりにくかもしれないですが一生懸命書き込みました。 宜しくお願い致します。

  • ユーザフォームのリストボックス

    お世話になります。 ユーザフォームのリストボックス内の下記2個のどちらかを選択し Private Sub UserForm_Initialize() ListBox1.AddItem ("印刷プレビュー") ListBox1.AddItem ("印刷") End Sub CommandButton1をクリックして Worksheets("Sheet1").PrintOut か Worksheets("Sheet1").PrintPreview を実行したいのですが どうやってリストボックスとコマンドボタンを 連動できるようにすればいいのでしょうか コマンドボタンのみだったら出来るのですが、 リストボックスを使うとうまくいきません。 ご教授よろしくお願いいたします。

  • ExcelVBA ユーザーフォームに関しての質問です。

    ExcelVBA ユーザーフォームに関しての質問です。 ユーザーフォームでフレームを使って、 フレーム内に複数のチェックボックスを配置したとします。 行いたい作業としては次の2点 ?フレーム内に配置したチェックボックスのうち、チェックが入っているものだけの数を調べる ?チェックが入っているボックスの値(caption)を取得して、変数に入れる 以上のことができるでしょうか?

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

    パスワード入力用のしかけです。 ワークシートに配置したコマンドボタンを押してユーザーフォームを呼び出します。 Private Sub CommandButton1_Click() UserForm1.Show End Sub ユーザーフォームにはテキストボックスとコマンドボタンを配置しております。 テキストボックスのPasswordCharには * を設定しました。 Private Sub CommandButton1_Click() If StrConv(TextBox1.Text, vbLowerCase) = "abcd" Then MsgBox "OK!" Unload Me Else TextBox1.Text = "" TextBox1.SetFocus End If End Sub これで、ABCDまたはabcdと入力され、ユーザーフォーム上のコマンドボタンをクリックすれば、ユーザーフォームは消えます。 でも、いちいちマウスでクリックするのが面倒なのでEnterキー1回でユーザーフォームを消したいのです。 今でも、一度Enterキーを押すと、ボタンにフォーカスが移動するので、さらにEnterで消えますが、二度ではなくEnterキー1回でユーザーフォームを消すにはどうすればよいのでしょうか? ユーザーフォームは使ったことがないのでわかりません。 よろしくお願いします。

  • ユーザーフォームでのコンボボックスについて。

    同じような内容の質問を探したのですが、解決の糸口がつかめず質問させていただきます。 VBAは初挑戦なんですが、本とネットではなかなか理解しづらいところがあって・・・。 自分の作っているフォームとは多少違いますが、説明を簡単にするために例を挙げさせていただきます。 まずSHEET1において、ユーザーフォームに3つのコンボボックスを配置しています。それぞれ、「月」「日」「曜」とします。 これを、SHEET2においてあるリスト「1~12」と「1~31」「月~金」にそれぞれ反映させたいのですが。 それを一つめのデータとして、「月」をA1、「日」をB1、「曜」をA2にそれぞれ配置して、二つめのデータはA3から始めたいのですが。 あともうひとつ。 SHEET3に表紙をおいて、コマンドボタンを配置し、そのボタンをクリックすると、SHEET1が開くと同時に、上記のユーザーフォームが出るってコトはできるのでしょうか? ややこしくてすみません。 よろしくお願いします。

  • ExcelVBAのユーザーフォームのリンクについて

    ExcelVBAのユーザーフォームのリンクについて 以前質問(5991009)したのですが内容が間違えていたので訂正して再度質問します。  ExcelVBAをゼロから独学で学んでる超初心者です。 ExcelVBAでデータベースを作っています。sheet1に配置してあるコマンドボタンでuserform1を開きそこに配置してあるlistbox1を選択するとuserform2~Xが開く設定にしています。 listbox1の内容はsheet2のデータのタイトルA~X(2行目~X行目)を読みに行っています。 userform2~Xの内容はsheet2のデータのタイトルA~Xのの内容を個別に作成しています。 流れはタイトルA(userform1-listbox1(1行目))を選択するとタイトルAの内容を表示(userform2)するというものです。userform2~Xはsheet2の上から順番に作っています。 sheet2の2行目の内容(タイトルA)→userform2 sheet2の3行目の内容(タイトルB)→userform3 という感じです。この状態だと問題なく開いていくのですが。このデータベースは後からタイトルをどんどん増やしていきます。そして、増やすたびにあいうえお順に並び替えをします。 そうすることによってタイトルと内容が合わなくなっていきます。例えば、 sheet2の2行目の内容が5行目(タイトルD)の内容に変更 sheet2の3行目の内容が2行目(タイトルA)の内容に変更 みたいな感じでバラバラになってしまいます。 流れがタイトルD(userform1-listbox1(1行目))を選択→タイトルA(userform2)を表示となってしまいます。 並び替えを行ってもタイトルとuserformがリンクする。 タイトルD(userform1-listbox1(1行目))を選択→タイトルD(userform4)を表示 となる様にするにはどうしたらよいのでしょうか? それともデータベースの考え方が根本的に違うのでしょうか。 へたくそな説明でわかりにくかもしれないですが一生懸命書き込みました。 宜しくお願い致します。

  • excelでVBAでユーザーフォームのリストBOX

    下記VBAの作成の仕方を教えていただけないでしょうか。 やりたいこと (1)sheet2のA1セル~A5セルまでの間の間をユーザーフォームのリストボックスに登録する (2)sheet1のA1セルをクリックすると、ユーザーフォームが起動し、任意のリストをクリックすると、 その値がA1セルに格納され。ユーザーフォームが終了する。 ※コマンドボタンは使わずにお願いします。なおexcel2000です。