エクセルを開くと自動的にユーザーフォームが数秒後に開く方法
エクセル住所録などでオリジナル入力画面をユーザーフォームで作っても、そのままではエクセルワークシート上にはありません。
最初の頃は「あれ?どこに行っちゃたのかな?」って思いませんでしたか?
ユーザーフォームを表示する
ユーザーフォームをワークシート上に表示する方法がいくつかありますので、順に書いていきます。
ワークシート上のコマンドボタンを使う
今でも念のために必ず下の図のように、ワークシート上にコマンドボタンを配置していて、クリックするとユーザーフォームが開くようにしています。
設定方法は簡単なので手順を書いていきます。
ワークシート上にコマンドボタンを配置する方法は、【開発】➡【挿入】の順にクリックすると、フォームコントロール(ツールボックス)が表示されます。
エクセルの標準設定では【開発】の表示はありませんので、オプションから設定して下さい。
一番左上が「ボタン」なので、これをクリックをしたらワークシート上にマウスを合わせて、左クリックしながら右斜め下へマウスを移動すると、ボタンが現れます。
マウスから手を離すと、マクロの登録画面が現れます。(標準モジュールにマクロが未登録の場合表示されないこともあります。)
そしてVBAの標準モジュールには、このようにコードを書いてあります。
これで完成ですが、エクセルを開いたら毎回ユーザーフォーム1を必ず開くのならば、ボタンを押さなくてもエクセル開くと同時にユーザーフォームが開いたら手間が省けて便利ですよね。
【参考】ユーザーフォームを閉じる
表示を理解したら、当然その反対のユーザーフォームを閉じる方法も抑えておきましょう。
ユーザーフォームを閉じるじゃなくて、閉じられなくする方法もあります。
✖ボタンを機能停止させて誤操作を回避できます。
エクセルを開くと同時にユーザーフォームを表示する
方法が2つあり、先ほど紹介した標準モジュールに書いたVBAコードを変更する方法と、ThisWorkbookに書く方法があります。
MENUという適当に付けた名前をAuto_Openというプロシージャーを使う事でできるようになります。
では、もうひとつの方法ですが、Microsoft Visual VasicのVBA Projectの中にある、ThisWorkBookに下記のように書き込めば、エクセルファイルを開いた時に自動的にユーザーフォームが開きます。
ThisWorkbookを開いたら、VBAコードを書きましょう。
これで、エクセルファイルを開いたらユーザーフォーム(UserForm1)が表示されます。
このままだと、表示するシート(ワークシート)もセル番号もが指定されていない為に、前回保存した場所が開いてしまうので、毎回違ったシートが開いてちょっと不便。
シートやセルも一緒に指定してしまえば、毎回必ず同じ部分が表示されますので、一緒にコードを書いておくことをお勧めします。
これでエクセルファイルを開くと必ずシートはsheets1のセルA1を選んでからユーザーフォーム(UserForm1)が開くようになります。
ちなみにシート名やセル、ユーザーフォームを変更すれば、お好みの場所とユーザーフォームを開くことができます。
セルの値を読み込んでからユーザーフォームを開く
エクセル住所録で使っているメインメニューが必ず表示されますが、表示する時に今日の日付を読み込んでからユーザーフォームが開くようにしています。
この設定をしないと、日付が”Label11、テキストボックスはそれぞれ空欄という状態になってしまいます。
このようにUserForm1.Showの前に値を読み込む手順を書いて行けば簡単にできるようになります。
また、この方法以外にもInitializeを使う方法もありますので、こちらもご覧ください。
OnTimeメソッドで数秒後に起動
このOnTimeメソッドを使うと、任意の指定した日時や特定の経過時間後に作業を実行するっていうコードです。
これを使って、エクセルを開いたら2秒後や3秒後にユーザーフォームを表示するって指示を書いたらうまくいかないか試してみたら、見事にスムーズに動くようになりました。
まず、先ほどと同じようにThisWorkBookに書きます。
次に、標準モジュールに実際に動かすコードを書きます。
ちなみに標準モジュールの追加方法は、Microsoft Visual VasicのVBA Projectの中にある、挿入から標準モジュールを選べば追加されます。
この2つがセットになって3秒後に指定したシートとセルとユーザーフォームが動くようになります。
ユーザーフォームの表示切り替え
ユーザーフォームを複数作ったら自由に表示させたくなりませんか?
例えば、このような流れです。
1、エクセル住所録ファイルを開くとメニューフォームを表示
2、登録・修正ボタンを押すと住所録フォームに表示が切り替わる
このような使い方ってよくあると思いますので、VBAコードも簡単なので書いてみました。