ユーザーフォームを閉じて別のユーザーフォームを開く方法

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

エクセルVBAでオリジナル入力フォームが作れるユーザーフォームを複数使い分けている時に、表示できなくなったり同時に複数表示してしまい困ったことありませんか?

上手に設定をすれば、表示・閉じる・フォームを差し替えることもできるようになり、使い勝手が向上する方法をご紹介します。

ユーザーフォーム表示方法

ユーザーフォームを表示させる方法として2つの方法を使っています。

  1. エクセルを開いた時に自動表示させる方法
  2. コマンドボタンを配置してVBAコードを記述してフォームを開く方法

個人的に多く利用している方法は①の、エクセルファイルを開いたら自動的にユーザーフォームが表示されるようにする方法です。

これにより、完成したエクセルファイルを提供先のスタッフさんが使用する際に、意図しない操作によりエラーが起きることを防ぐためです。

この方法については、ここでは説明が重複するので省略します。

それではまず始めにユーザーフォームの基本「表示」「閉じる」から始めましょう。

ユーザーフォームを開く

コマンドボタン1を押したらユーザーフォーム1が開くようにするには、下記のように記述します。

VBAコード

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1を表示する
  3. マクロ終了

ユーザーフォームを閉じる

ユーザーフォームを閉じるには、ユーザーフォーム自体の右上の「✖」ボタンを押すか、「コマンドボタン」にユーザーフォームを閉じるVBAコードを記述します。

まずは、コマンドボタンにVBAコードを記述する方法です。

VBAコード

Private Sub CommandButton1_Click()
Unload UserForm1
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1を閉じる
  3. マクロ終了
波乗りアヒル

そしてもうひとつのユーザーフォーム自体の右上の「✖」ボタンですが、この方法おススメしません

理由は簡単で、✖ボタンを押されてしまいフォームが閉じられてしまうと、次の操作を誘導することができなくなり、意図しない操作をされてしまう恐れがありエラーの原因になるからです。

必ずフォーム内に動作を誘導するコマンドボタンを配置しておくことをおススメします。

ちなみにこの✖ボタンを無効にする方法もありますので、気になる方は下記をご覧くださいませ。

ユーザーフォームの切り替え

小難しそうにユーザーフォームの切り替えを書きましたが、実は単純に「表示」と「閉じる」を続けてVBAコードを記載するだけなんです。

ユーザーフォーム1を閉じてユーザーフォーム2を表示する場合は下記のようにVBAコードを書けば完成です。

VBAコード

Private Sub CommandButton1_Click()
Unload UserForm1
UserForm2.Show
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1を閉じる
  3. ユーザーフォーム2を表示する
  4. マクロ終了

たったこれだけでユーザーフォームの切り替えが完了しますが、「閉じる」「開く」の順番です。

逆の順番で行ってしまうと2重にフォームを開くことになりエラーになる原因です。

【応用】今日の日付を取得してからフォームを開く

ユーザーフォームの切り替えができるようになると、セルの値を取得してからユーザーフォームを開くようにできないものかと思いませんか?

実は簡単で、「閉じる」と「開く」の間に「セルの値を取得してから」という内容を書き加えればできるんですよ!

例えば、セルA1に今日の日付が数式「=TODAY()」で自動的に取得している時に、ユーザーフォーム1を閉じて今日の日付をユーザーフォーム2のラベル1に取得してから、ユーザーフォーム2を表示するようにします。

VBAコード

Private Sub CommandButton1_Click()
Unload UserForm1
UserForm2.Label1.Caption = Range(“A1”).Value
UserForm2.Show
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1を閉じる
  3. ユーザーフォーム2に配置されたラベル名をセルA1の値とする
  4. ユーザーフォーム2を表示する
  5. マクロ終了
波乗りアヒル

このように3行目にラベル以外にもテキストボックスにも同様に複数の取得したいセルの値があれば、その数の分だけ記述すればセルの値を取得してから、ユーザーフォームを開くことができるようになります。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

2024年5月11日からマイルと楽天ポイントとの相互交換提携開始!

交換レート0.5:1なので半分になってしまいますが、使い方次第で実質3倍の価値まで引き上げられる方法です。