「エクセルVBA」ユーザーフォーム作成手順とモードレス表示

( ノ゚Д゚)こんばんは!こんにちは!おやすみなさい!おはようございます! とっちーです。

 

 

今回はVBAで「ユーザーフォーム」の土台の作成手順をお伝えしてみます。

 

ユーザーフォームって何?って思います?

 

ユーザーフォームは、ラジコンやテレビの「リモコン」の箱みたいなものです。

 

リモコンの上にはボタンがいっぱいあるでしょ、ユーザーフォームの上にもボタンを設置して

 

いろんな動作をさせることが出来るんですね。

 

そうして誰でもエクセルのデータが操作できるようなウインドウ画面を作って、誰でもシートのデータを操作できたら、いかがでしょうか?

 

ほら、リモコンって誰でも触れるように作られているでしょ。

 

そんな感じで、パソコンになれていない人にExcelを操作してもらいたいときに使ってもらう表示画面の土台の作成方法になります。

 

 

それと、ユーザーフォームをご存知の方にユーザーフォームを起動してもエクセルの操作ができるコードをお伝えします。

 

 

新しいことにチャレンジするって素晴らしいと思います。

 

VBAって何

 

【Visual Basic for Applications】の頭文字を取ってVBAと呼んでいます。

 

簡単に言うと「エクセル」の制御が行える「プログラミング言語」のことです。

 

一般的に「プログラミング言語」と耳にすれば、苦手意識が先立つことでしょうから

 

いままで素通りされた方もおられると思います。

 

ところがVBAは覚えてしまえば、エクセル操作が楽しめる「実」に有難い代物なんですよ。

 

ぜひVBAの魅力に取り込まれちゃってください。

 

なぜ、そんなにもVBAにご招待をするかというお話ですが、シートのセルに仕組んだ計算式

 

 

ある日突然、いなくなっていたりしませんか?

 

関数計算式が行方不明

 

 

セルに関数の数式が設定されていたのに!

 

1.計算式がなくなっている

2.計算式が壊れてる

3.計算式が変更されている

 

などなど諸事情により自分の知らない間に、改変されていることが、あるんですね。

 

「あれぇ?、また壊れてる」なんて経験したことありませんか?

 

そんな経験が無いようなら、素晴らしい自分と素晴らしいスタッフに囲まれていることに感謝しておきましょう。

 

ですが、そんな素晴らしいパターンとは、似ても似つかない真逆のパターンのほうが実際には多いですね。

 

たくさん勉強して、せっかく「セルに入力できた関数式」を「消してしまった」とか「消されたこと」ってありませんか?

 

もしもの時のために「シートの保護」をかけていれば防げたかもしれませんが。

 

 

はは、「シートの保護」忘れちゃうんですよ。普通の人間だもの。 By とっち~

 

 

そんなあきらめムードを起こさせないためにもVBAを使うシステムづくりを覚えてみましょう。

 

VBAの準備作業

 

 

VBAを作成するために必要な準備があります。

 

エクセルを(ファイルを)立ち上げたら、まず一番目にすることがあります。

 

 

ファイルの種類の確認

 

(えっちゃん)
はてなくん、この立ち上げてみたファイルの種類はなに?

 

(はてな君)
Excelブックになってる

 

 

(えっちゃん)
実はVBAを作成して保存する場合なんだけど。Excelブックのままだと、こんなメッセージが出るんだ。見たことあるかな?

 

 

 

(はてな君)
あるある、ついつい「はい」を押しちゃって「マクロが消えた~」ってことあるんだ

 

(はてな君)
ここは、「いいえ」で一度、名前を付けて保存ダイアログに戻るんだよね

 

 

(えっちゃん)
そう、そして、ファイルの種類を「マクロ有効ブック」にして「保存」をするんだ。そうしないと、せっかく作ったVBAやマクロが「保存」されないんだ

 

 

(えっちゃん)
なので、保存をするとき、必ず「マクロ有効ブック」を選んでから「保存」ボタンを押してね。または、新しくファイルを作成した時に一度保存をしておくこともおススメだよ。「マクロ有効ブック」を選択して一度ブック(ファイル)を上書き保存しておくんだ。

 

(はてな君)
そして、そのファイルをもう一度起動して、そこにVBAやマクロを作成していけばいいんだね、えっちゃん

 

 

(えっちゃん)
そうなんだ、そうしたら保存のときスムーズに保存できるし、おすすめだよ

 

(はてな君)
他にも設定方法ってあるの?

 

 

(えっちゃん)
Excelオプションメニューの中に保存の項目があるんだけど

 

(えっちゃん)
保存形式を常に「マクロ有効ブック」に設定しておくことかな、ただし、マクロが必要でないものも保存形式が「マクロ有効ブック」になるからね

 

 

(はてな君)
うん、わかった

 

 

VBE

 

(はてな君)
VBE?って何

 

 

(えっちゃん)
VBAのコードを管理するソフトのことだよ、簡単に言うとVBAの「コード」プログラムを記述するところなんだ

 

 

(はてな君)
そうなんだ~どんなのだろう

 

VBEの起動

 

エクセルで「VBAコード」を作成したいシートが、画面に表示されたことを確認した後。

 

キーボード上にある「Alt」キーを押しながら「F11」キーを押してみましょう

 

 

 

 

 

VBE【Visual Basic Editor】が起動します。

 

(はてな君)
これが、そうなんだ

 

 

(えっちゃん)
だよ、ここで、コードを作成するんだよ

 

VBEの各名称

 

(えっちゃん)
それじゃ画面構成の説明するね

 

 

➊プロジェクト「VBA-Project」エクスプローラは、現状エクセルが起動している全てのブック(ファイル)のオブジェクト(構成要素)を表示してくれます。

なので、複数のエクセルファイルを起動すると、プロジェクトの表示エリアは複数のファイル分のプロジェクトで埋め尽くられます。あまり起動すると訳が分からなくなる場合もあります。

 

➋プロパティウインドウは、プロジェクトエクスプローラで選択されたオブジェクトやフォームオブジェクトで作成したオブジェクトの詳細を表示し、設定変更等が行える箇所です。

 

 

➌コードウインドウは、プロジェクトエクスプローラで選択されたオブジェクトやフォームオブジェクトで作成したオブジェクトに対して「コードの作成・修正・追加・削除などの編集」を行うことが出来る教室の黒板みたいな箇所です。

 

 

コードウインドウが表示されるだけでなく、作成した「ユーザーフォーム」関連も表示されます。

 

コードウインドウの左上にある(General)と記載がある箇所が「オブジェクトボックス」といいます。

右上にある(Declarations)が「プロシージャボックス」といいます。

 

(General)は、プロジェクトエクスプローラで選択しているオブジェクトに関連付けが可能な「オブジェクト」が含まれており「▼」プルダウンメニューで選択変更することが出来ます。

 

(Declarations)は(General)で関連付けが可能な「イベント」と及び「プロシージャ」が含まれており、「▼」プルダウンメニューで選択変更することが出来ます。

 

「プロシージャ」とは、実行するプログラムが単数なら、その一つのことをいいます。

複数なら、その複数のそれぞれ1つ一つの単位のことを「プロシージャ」といいます。

 

 

 

フォームの作成

 

 

(はてな君)
えっちゃん、フォームの作り方って難しいの?

 

(えっちゃん)
大丈夫さ、マウス操作でできるよ

 

(はてな君)
マウスだけで出来ちゃうの!

 

(えっちゃん)
大まかな形までは出来るよ

 

起動したVBEを選択して「アクティブ状態」にしましょう。

 

 

 

プロジェクトエクスプローラ内の「VBAProject(ファイル名)」にマウスポインタを重ねてマウスの左ボタンを≪ポチッと押します。VBAProjectが選択され反転表示(文字白抜き背面青)されました

 

プロパティウインドウには、「VBAProject プロジェクト」って表示されています。

 

次に反転表示しているVBAProjectを≪ポチッと右クリックします。

 

選択メニューが表示されます。

 

 

マウスポインタをメニューの中に移動させましょう。

 

 

 

 

メニュー内に「挿入」という項目があります。マウスポインタを「挿入」に重ねて左ボタンを≪ポチッと押します。

 

さらに選択メニューが表示されました。

 

「ユーザーフォーム」「標準モジュール」「クラスモジュール」の3点から選択できるようになっています。

 

簡単に「ユーザーフォーム」は、オブジェクトを作成するところ、「標準モジュール」はコードを育成するところとでも覚えておきましょう。

 

 

今回は、「ユーザーフォーム」をさくせいしますので、「ユーザーフォーム」にマウスポインタを重ねて左ボタンを≪ポチッと押します。

 

 

 

 

VBEの画面から選択メニューの表示が消えて、代わりにコードウインドウに【UserForm1】が表示されます。

 

(はてな君)
なにこれ?何が出来るの?

 

 

(えっちゃん)
う~んとね、教室の中だったら机があるでしょ、その机の上でいろんな作業が出来るじゃない、でもお外に例えばお絵かきに出かけたとするじゃないでも出かけるときに机は持ち出さないよね

 

(はてな君)
あぁ、画板ね

 

(えっちゃん)
そうそう、そんな感じだね

 

作成した【UserForm1】には、実行ボタンや表示ラベル、選択メニューや☑ボックスなどを配置設定することが出来ます。

 

今回は、お外にお絵かきをするときに持ち出す準備作業と同様に、必要なボタンや表示などを設置するための土台を作る方法をお伝えしてみました。

 

ボタンの設置もお伝えしたいのだけど、設置する種類も沢山ありますので改めてお伝えさせていただきます。

 

ちなみにお伝えしたいと思っているのは、

ラベル表示、テキストボックス、コンポボックス、リストボックス、チェックボックス、オプションボタン、コマンドボタンなどです。

 

楽しみにしててくださいね。

 

UserForm1の表示

 

最後に、実は【UserForm1】なのですが、シートにボタンを設定して起動させたりもできるんですね。

 

作成方法は、以下のようになります。

 

コマンドボタンの作成

 

 

シート上の任意の場所にコマンドボタンを設置します。

 

 

➊開発タブを選択(左クリック)したら➋「挿入」コマンドをポチっ(左クリック)とします。

 

ActiveXコントロール側の➌コマンドボタンを選ん(左クリック)でから、シート上の任意の位置にドラッグを行ってボタンを設置します。

 

 

 

設置が完了したら➎デザインモードをクリックしてください。

 

コマンドボタンにコードを記述する

 

 

➏作成したコマンドボタンをダブルクリックしてみてください。

 

VBEが起動します。

 

 

 

Private Sub CommandButton1_Click()

End Sub

 

が表示されています。

 

 

上記のコードは、シート上に作成した「コマンドボタン」を押したときの動作を作成するプロシージャになります。

Private Sub CommandButton1_Click()とEnd Subの間にボタンが押されたときの動作等のプログラムを記述していきます。

 

それでは「ユーザーフォーム」で作成した【UserForm1】をシート上に表示させてみたいと思います。※オブジェクト名UserForm1を変更した場合は変更後のオブジェクト名を使用すること

 

Private Sub CommandButton1_Click()とEnd Subの間に次のコードを記述します。

構文 オブジェクト名.show

オブジェクトをウインドウで表示する

改めて以下のようにコードを差し込みます

 

Private Sub CommandButton1_Click()

         UserForm1.show

End Sub

入力が終えたら、VBEをいったん終了させますのでVBEダイアログ右上の×を押します。

 

コマンドボタンを実行する

 

シート上に作成したボタンを押してみましょう。

 

 

 

➊コマンドボタンをマウスで選択(左クリック)する。

 

➋UserForm1が表示されます。

 

シート上に設置したオブジェクト(ボタン)からユーザーフォームで作成したUserForm1を操作してみました。

 

 

といっても表示させただけですが。

 

 

表示させたUserForm1を閉じるときはUserForm1の右上の×を左クリックしてみてください。表示が消えます。

 

このような使い方も、ありますので参考にしてみてください。

 

また、上記の表示方法だとUserForm1がシート上に表示されている間、シートなど一切触れなくなります。

 

操作ミスを防ぐうえでは、ありがたいのですがエクセルのシートやその他の作業を行いたいときってあるんです。フォームを表示させたままでもシートが操作できるんですね。

 

そんなときは、フォームの表示をモードレス表示をさせます。使用するのはShowメソッドのvbModelessになります。

 

 

UserForm1をモードレス表示

 

構文 オブジェクト名.show vbModeless

オブジェクトをウインドウで表示しても、シートなどエクセルの操作ができる指定方法です。

 

コードになります。

 

 

 

コマンドボタンを押して起動してみました。

 

 

UserForm1が表示されるのは、同様です。

 

 

 

さらに、シートの操作もできるようになるんですね。

 

もちろんUserForm1を選択すれば、UserForm1操作することが出来ます。

 

いかがでしょうか、アレンジしたくなってきませんか。

 

まとめ

 

今回は、ユーザーフォームの作成方法とユーザーフォームで作成したUserForm1を表示させたまま、Excelのシートを操作することが出来る方法をお伝えしてみました。

 

Showメソッドもただ表示するだけでなく、より詳細に設定できるVBAって素敵ですね。

 

 

 

楽しくエクセルをアレンジして今日も、新しい発見をしてみませんか!

自分に合ったお気に入りのスタイルでエクセルを使いこなしていきましょう。

 

ありがとうございました。

 

 

スポンサーリンク