エクセルVBAでオリジナル入力フォームが作れるユーザーフォームを複数使い分けている時に、表示できなくなったり同時に複数表示してしまい困ったことありませんか?
上手に設定をすれば、表示・閉じる・フォームを差し替えることもできるようになり、使い勝手が向上する方法をご紹介します。
ユーザーフォーム表示方法
ユーザーフォームを表示させる方法として2つの方法を使っています。
- エクセルを開いた時に自動表示させる方法
- コマンドボタンを配置してVBAコードを記述してフォームを開く方法
個人的に多く利用している方法は①の、エクセルファイルを開いたら自動的にユーザーフォームが表示されるようにする方法です。
これにより、完成したエクセルファイルを提供先のスタッフさんが使用する際に、意図しない操作によりエラーが起きることを防ぐためです。
この方法については、ここでは説明が重複するので省略します。
![](https://tripbowl.net/wp-content/uploads/2018/07/84b2433e779fb853675f85e60a9476e8-300x200.jpg)
それではまず始めにユーザーフォームの基本「表示」「閉じる」から始めましょう。
ユーザーフォームを開く
コマンドボタン1を押したらユーザーフォーム1が開くようにするには、下記のように記述します。
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
- コマンドボタン1がクリックされたら
- ユーザーフォーム1を表示する
- マクロ終了
ユーザーフォームを閉じる
ユーザーフォームを閉じるには、ユーザーフォーム自体の右上の「✖」ボタンを押すか、「コマンドボタン」にユーザーフォームを閉じるVBAコードを記述します。
まずは、コマンドボタンにVBAコードを記述する方法です。
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
- コマンドボタン1がクリックされたら
- ユーザーフォーム1を閉じる
- マクロ終了
![](https://tripbowl.net/wp-content/uploads/2018/07/cropped-512x512.jpg)
そしてもうひとつのユーザーフォーム自体の右上の「✖」ボタンですが、この方法おススメしません。
理由は簡単で、✖ボタンを押されてしまいフォームが閉じられてしまうと、次の操作を誘導することができなくなり、意図しない操作をされてしまう恐れがありエラーの原因になるからです。
必ずフォーム内に動作を誘導するコマンドボタンを配置しておくことをおススメします。
ちなみにこの✖ボタンを無効にする方法もありますので、気になる方は下記をご覧くださいませ。
![](https://tripbowl.net/wp-content/uploads/2018/07/e5cc8f7bab6bb944b45f51568762b362-300x200.jpg)
![](https://tripbowl.net/wp-content/uploads/2018/07/e5cc8f7bab6bb944b45f51568762b362-300x200.jpg)
ユーザーフォームの切り替え
小難しそうにユーザーフォームの切り替えを書きましたが、実は単純に「表示」と「閉じる」を続けてVBAコードを記載するだけなんです。
ユーザーフォーム1を閉じてユーザーフォーム2を表示する場合は下記のようにVBAコードを書けば完成です。
Private Sub CommandButton1_Click()
Unload UserForm1
UserForm2.Show
End Sub
- コマンドボタン1がクリックされたら
- ユーザーフォーム1を閉じる
- ユーザーフォーム2を表示する
- マクロ終了
たったこれだけでユーザーフォームの切り替えが完了しますが、「閉じる」「開く」の順番です。
逆の順番で行ってしまうと2重にフォームを開くことになりエラーになる原因です。
【応用】今日の日付を取得してからフォームを開く
ユーザーフォームの切り替えができるようになると、セルの値を取得してからユーザーフォームを開くようにできないものかと思いませんか?
実は簡単で、「閉じる」と「開く」の間に「セルの値を取得してから」という内容を書き加えればできるんですよ!
例えば、セルA1に今日の日付が数式「=TODAY()」で自動的に取得している時に、ユーザーフォーム1を閉じて今日の日付をユーザーフォーム2のラベル1に取得してから、ユーザーフォーム2を表示するようにします。
Private Sub CommandButton1_Click()
Unload UserForm1
UserForm2.Label1.Caption = Range(“A1”).Value
UserForm2.Show
End Sub
- コマンドボタン1がクリックされたら
- ユーザーフォーム1を閉じる
- ユーザーフォーム2に配置されたラベル名をセルA1の値とする
- ユーザーフォーム2を表示する
- マクロ終了
![](https://tripbowl.net/wp-content/uploads/2018/07/cropped-512x512.jpg)
![](https://tripbowl.net/wp-content/uploads/2018/07/cropped-512x512.jpg)
![](https://tripbowl.net/wp-content/uploads/2018/07/cropped-512x512.jpg)
このように3行目にラベル以外にもテキストボックスにも同様に複数の取得したいセルの値があれば、その数の分だけ記述すればセルの値を取得してから、ユーザーフォームを開くことができるようになります。
関連記事
-
使っていない人が意外と多いエクセル標準機能でオリジナル入力画面を作る
エクセルで様々な数値などのデータ入力を行う時に、オリジナルの入力画面でエクセルを操作できるってご存知でしたか? この入力画面をユーザーフォームといい、ユーザー… -
Excel-VBAタイマー機能で数秒後にユーザーフォームを表示させる方法
エクセルを使って成績などを入力して作成した成績表で、入力漏れがなかったかどうかなどをチェックするのに数秒間だけ指定したページや範囲を表示させたいと思ったこと… -
ユーザーフォームを閉じて別のユーザーフォームを開く方法
エクセルVBAでオリジナル入力フォームが作れるユーザーフォームを複数使い分けている時に、表示できなくなったり同時に複数表示してしまい困ったことありませんか? 上… -
ユーザーフォームのタブやエンターでカーソル移動する順番変更方法
ユーザーフォームを使っていてテキストボックスに入力してtabやenterを押したら、入力したい順にカーソルが移動しなくて困ったことありませんか? タブオーダーという機… -
エクセルファイルを開くと自動的にユーザーフォームを表示する方法
オリジナルの入力フォームを表示させる方法に悩んだことありませんか? エクセルファイルを開いたら自動的にユーザーフォームが開くようになったら手間もなく便利なので… -
ユーザーフォームの✖ボタンでフォーム自体閉じられないようにする
苦労してExcel-VBAを組み込んだエクセルファイルを他人に渡して使ってもらうと、エラー表示になったと言われたことありませんか? 原因は簡単で、エクセル操作をオリジ… -
エクセルVBAのユーザーフォーム表示位置を任意の場所に変更する方法
オリジナルの入力フォームを作ったのに、シート上の文字やセルの上に表示されているので位置を変えたいと思ったことありませんか? 初期設定の画面中央から好きな位置に… -
ユーザーフォームのテキストボックスが空欄の時にVBAメッセージを出す方法
オリジナルの入力フォームを作って使用していると、入力を忘れている項目があるのにコマンドボタンを押してしまい、空欄のリストが出来上がって困ったことありませんか…
紅葉スポット
-
日本三名瀑・袋田の滝は紅葉ライトアップの名所で袋田駅からバス
日本三名瀑でもある袋田の滝は、高さ120m幅70mの大きさを誇りトンネル横の展望台からは、目の前に迫った滝を見ることができます。 そしてエレベーターで昇った展望台… -
養老渓谷紅葉ライトアップへ上総中野駅からバスで滞在時間3時間
懐かしい国鉄車両に乗車できるいすみ鉄道に乗って、昭和の風情が残る養老渓谷の温泉街で地元振興もかねて「養老渓谷もみじまつり」が行われ、ライトアップも行いながら… -
北関東トップクラスの日本庭園がある徳明園の標高差による紅葉絶景へ
【紅葉見頃】11月中旬~12月上旬 高崎市内循環バス「ぐるりん」バスのフリーエリア内のあるので、電車とバスを利用して気軽に訪れることができ、北関東一ともいわれる… -
透明度抜群の丸沼ダムのダム湖に紅葉景色が反射する秋らしい絶景へ
丸沼といえば丸沼高原スキー場が有名で、日光と沼田の中間に位置しているので、日光駅からでも沼田駅からも丸沼ダムへバスで紅葉を見に行くことができます。 特に東武鉄… -
富津市の紅葉名所もみじロードへ上総湊駅や浜金谷駅からバスで行く
JR内房線の上総湊駅と浜金谷駅からバスで行くことができますが、もみじロードは10㎞もあるので歩いて全てを見ることはかなり難しいと思いますので、それぞれ行ける範囲… -
中禅寺湖湖畔の紅葉散策へ奥日光の大定番紅葉観光スポットへ
中禅寺湖観光の中禅寺温泉バスターミナルから華厳の滝や中禅寺湖畔散策へ紅葉を楽しみに訪れる方も多く、紅葉見頃になるといろは坂からの大渋滞に巻き込まれ1時間以上、…