はじめに
Excel VBA のUserFormの使い方を解説する。素材はデータベース。
目標とするUserFormは次の3つになる。



ここでは、UserFormの使い方の解説が主目的であり、データベース自体は貧弱なものになっている。データベースの実用性を考えた場合、さらにUserFormの部品を追加する必要があるが、ここでの解説が理解できれば、難しいことはないと考える。
VBAでマクロプログラミングを行う際の注意点、プログラム作成の解説はその都度行うことにする。
下準備
Excelメニューで「開発」を表示させることから始める。
Excelメニューで「ファイル」>「その他」>「オプション」>「リボンのユーザー設定」をクリックし、
表示画面で「開発」にチェックを入れてOKを押せば、Excelメニューに開発が表示される。
開発のクリック
開発をクリックすると以下の画面が表示される。
シートへコマンドボタンを配置する
マクロをキックさせる場合、F5キーを押すのはいただけない。F5キーはマクロプログラミングをしているときに使うものであり、実際に動かす場合は、シートにコマンドボタンを埋め込んでそれをクリックする。
やり方は挿入の矢印をクリックして一番上の左端をクリックする。このとき、ALTキーを押しながら挿入するとセルと一致する。
ここで、注意することはActiveXボタンに絶対に触れないことである。これはフォームコントロールとは別物であり、システムに影響を与えるものなので、よほどの腕がなければ、触れてはいけない。
ここで、ボタン1では恰好が悪いので、たとえば「実 行」とか自分の好きな名前に変更する。
これでマクロが登録できる状態になったのだが、これに登録できるマクロは標準モジュールで作ったものだけである。
セルの他の部分をクリックして、〇印を消してから、再度開発をクリックして、マクロを作成する。
ユーザーフォーム1の作成
開発をクリックして、一番左端のビジュアルベーシックを押すと、殺風景な画面が出てくる。
ここにコントロールからオプションボタンとコマンドボタンの2種類をユーザーフォームに配置する。オプションボタンは3つ、コマンドボタンは2つである。
配置の仕方は選択してドラックし、ユーザーフォーム上にドロップすればいい。
ここで、名前を変更する。
変更の仕方は、各ボタンを選択すると(左クリック1回)、左端の下にプロパティ〇〇と出てくるので、そこのCaptionにボタンの名前を書く。


同様の操作を、オプションボタン2、オプションボタン3、コマンドボタン1、コマンドボタン2でそれぞれ名前をつけて、見栄えが良くなるように大きさを変える。
ここでF5を押すと、エクセルのシートにユーザーフォーム1が表示される。
ここで、Option Explicit というのは、宣言した変数以外は使えないという宣言であり、必ずつけるようにしてほしい。
つけ方は、ツール>オプション>変数の宣言を強制する、にチェックを入れる。最初の画面では出てこないので、この操作をしてからもう一度、UserForm1のコードを選択すれば自動的についてくる。
その下に、Option Base1を追加で書いておく。これは配列の下限値を1に設定するもので、C言語系のものは0から始まるし、VBAも0から始まるが、シート番号やワークシートは1からはじまるなど、エクセル自体は1から始まるので、VBAのマクロプログラミングでは1に設定すべきである。
マクロプログラミング
Option Base 1 まで書き終わったらその下に、以下のコードをコピペする。
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
msgbox "aaa"
ElseIf OptionButton2.Value = True Then
msgbox "bbb"
ElseIf OptionButton3.Value = True Then
MsgBox "ccc"
End If
End Sub
ここで、重要なことは、一行目のPrivate Sub 〇〇とEnd Subである。これは手書きとかコピペではなく、ユーザーフォーム1に配置したコマンドボタンをダブルクリックすることによって自動的に書かせるものである。ユーザーフォームで部品を活用する場合は必ず、部品をダブルクリックして書かせなければならない。
コマンドボタン2も同様に部品をダブルクリックして以下のコードをコピペする。
Private Sub CommandButton2_Click()
Unload Me
End Sub
ここで、Me というのはVBAの用語で自分自身を表す。従って、Unload Me というのはユーザーフォーム1をloadしない、つまり自分自身を消すという意味である。
またUnloadというのもVBAの用語のひとつである。
ここまでできたら、F5を押しオプションボタンをおして、新規>実行>aaa、削除>実行>bbb、修正>実行>cccが出て、終了でフォームが消えることを確認すること。
セルのコマンドボタンにユーザーフォーム1をキックさせる
標準モジュールの画面を開く。
以下のコードをコピペする。今度は自分で作るものなので、Option Explicit 以外はそのままコピペしてOK。
Option Explicit
Option Base 1
Sub actionButton()
UserForm1.Show
End Sub
コピペし終わったら、エクセルのシートを表示して、コマンドボタンを右クリックする。
セルの何もないところをクリックしてコマンドボタンの〇印を消してから、実際にコマンドボタンを押す。
先ほどと同様にユーザーフォーム1が現れて、各オプションボタンを押して正常に動くことを確認する。
以上で、セルに埋め込んだコマンドボタンへの登録は終了である。
サイトご利用方法
次のページ・前のページを利用するよりも、グローバルメニュー(ヘッダー部分にある項目)・サブメニュー記事の項目をクリックしていただければ、その項目の全体像が一目でみることができ、クリックすればそのサイトへ飛びます。
google、yahoo、Bingなどで検索する場合、検索ワードは先頭に、孤立じじい、と入力しその後に、グローバルメニュー・サブメニュー記事のどれかひとつの項目を入力すると、その検索サイトが上位表示されます。