( ノ゚Д゚)こんばんは!こんにちは!おやすみなさい!おはようございます! とっちーです。
今回はVBAで「ユーザーフォーム」の土台の作成手順をお伝えしてみます。
ユーザーフォームって何?って思います?
ユーザーフォームは、ラジコンやテレビの「リモコン」の箱みたいなものです。
リモコンの上にはボタンがいっぱいあるでしょ、ユーザーフォームの上にもボタンを設置して
いろんな動作をさせることが出来るんですね。
そうして誰でもエクセルのデータが操作できるようなウインドウ画面を作って、誰でもシートのデータを操作できたら、いかがでしょうか?
ほら、リモコンって誰でも触れるように作られているでしょ。
そんな感じで、パソコンになれていない人にExcelを操作してもらいたいときに使ってもらう表示画面の土台の作成方法になります。
それと、ユーザーフォームをご存知の方にユーザーフォームを起動してもエクセルの操作ができるコードをお伝えします。
新しいことにチャレンジするって素晴らしいと思います。
Contents
VBAって何
【Visual Basic for Applications】の頭文字を取ってVBAと呼んでいます。
簡単に言うと「エクセル」の制御が行える「プログラミング言語」のことです。
一般的に「プログラミング言語」と耳にすれば、苦手意識が先立つことでしょうから
いままで素通りされた方もおられると思います。
ところがVBAは覚えてしまえば、エクセル操作が楽しめる「実」に有難い代物なんですよ。
ぜひVBAの魅力に取り込まれちゃってください。
なぜ、そんなにもVBAにご招待をするかというお話ですが、シートのセルに仕組んだ計算式
ある日突然、いなくなっていたりしませんか?
関数計算式が行方不明
セルに関数の数式が設定されていたのに!
1.計算式がなくなっている
2.計算式が壊れてる
3.計算式が変更されている
などなど諸事情により自分の知らない間に、改変されていることが、あるんですね。
「あれぇ?、また壊れてる」なんて経験したことありませんか?
そんな経験が無いようなら、素晴らしい自分と素晴らしいスタッフに囲まれていることに感謝しておきましょう。
ですが、そんな素晴らしいパターンとは、似ても似つかない真逆のパターンのほうが実際には多いですね。
たくさん勉強して、せっかく「セルに入力できた関数式」を「消してしまった」とか「消されたこと」ってありませんか?
もしもの時のために「シートの保護」をかけていれば防げたかもしれませんが。
はは、「シートの保護」忘れちゃうんですよ。普通の人間だもの。 By とっち~
そんなあきらめムードを起こさせないためにもVBAを使うシステムづくりを覚えてみましょう。
VBAの準備作業
VBAを作成するために必要な準備があります。
エクセルを(ファイルを)立ち上げたら、まず一番目にすることがあります。
ファイルの種類の確認

















VBE



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
オブジェクトをウインドウで表示しても、シートなどエクセルの操作ができる指定方法です。
コードになります。
1 2 3 |
Private Sub CommandButton1_Click() UserForm1.Show vbModeless End |
コマンドボタンを押して起動してみました。

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

さらに、シートの操作もできるようになるんですね。
もちろんUserForm1を選択すれば、UserForm1操作することが出来ます。
いかがでしょうか、アレンジしたくなってきませんか。
まとめ
今回は、ユーザーフォームの作成方法とユーザーフォームで作成したUserForm1を表示させたまま、Excelのシートを操作することが出来る方法をお伝えしてみました。
Showメソッドもただ表示するだけでなく、より詳細に設定できるVBAって素敵ですね。
楽しくエクセルをアレンジして今日も、新しい発見をしてみませんか!
自分に合ったお気に入りのスタイルでエクセルを使いこなしていきましょう。
ありがとうございました。