特集
» 2014年02月21日 10時20分 公開

いつもの設計シートをアプリに簡単変身! Excel VBA活用術これは使える! 設計現場のExcel(2/4 ページ)

[伊藤孝宏,MONOist]

GUIを作ろう

 では、GUIから作成していきます。図6に示すように、「挿入→ユーザーモジュール」とクリックすると、ユーザーフォームという土台が出来上がります。

図6 ユーザーフォームを用意

 ユーザーフォームは標準では、240×180ピクセルの大きさになるので、これを貼り付ける画像の大きさに合わせます。

 左下のプロパティウィンドウで「UserForm1」となっていることを確認して(プロパティウィンドウは選択されたGUI部品ごとに切り替わります)、「Height」欄を600にWidth欄を800に変更してください。すると、図7に示すようにユーザーフォームが800×600ピクセルに広がります。

図7 ユーザーフォームのプロパティを変更

 合わせて、「Caption」欄も例えば、「バネ定数計算」と書き換えると、ウィンドウ左上に「バネ定数計算」と表示されるようになります。

 出来上がったユーザーフォームに背景として、用意した図を貼り付けます。プロパティウィンドウで、Picture欄をクリックすると、右側に「...」が現れるので、これをクリックすると、ファイル選択ウィンドウが開きます。ファイル選択ウィンドウで用意した画像ファイルを選択し、「開く」をクリックすると、ユーザーフォーム中央に画像が表示されます。

 次に、画像をユーザーフォームの大きさに合わせるために、PictureSizeMode欄で1-fmPictureSizeModeStretchを選択してください。すると、図8に示すように、ユーザーフォームいっぱいに画像が広がります。画像はユーザーフォームに組み込まれるので、以降、画像ファイルは不要です。

図8 背景に用意した画像を設定

 背景画像の入ったウィンドウが出来上がったので、入出力欄や計算ボタンを作っていきます。図9に示すツールボックスで上段の右から2番目、「ab」と記載された部品がテキストボックスです。

図9 ツールボックス

 これをマウスで左クリックし、ユーザーフォーム上で再度、左クリックすると、ユーザーフォーム上にテキストボックスが出来上がります。図の左上の「Textbox」と重なるように、マウスで大きさと位置を調整します。次に、プロパティウィンドウが「TextBox1」となっていることを確認して、「Font」欄をクリックすると、右側に「...」が現れるので、これをクリックすると、字体や大きさを設定できるウィンドウが表示されます。例えば、フォントサイズを20に設定します。

 入力欄が1つできたので、入力欄に名札をつけます。ツールボックスで、上段左から2番目の「A」と記載された部品がラベルです。同様にマウスでクリックし、ユーザーフォームの先ほど設定したテキストボックスの上に配置し、大きさを調整します。次に、Font欄で同様にして、フォントサイズを20に設定し、Caption欄を「コイル平均径[mm]」に書き換えます。

 同様にして、左側2段目、3段目、右側2段目の「Textbox」の位置に、テキストボックスとラベルを配置しますが、ここで、先ほど作成したテキストボックスとラベルを、Shiftキーを押しながら選択すると、2つとも選択されるので、今度はCtrlキーを押しながら、ドラッグ&ドロップすると、新たな位置にテキストボックスとラベルが出来上がります。これを繰り返すと、文字サイズなどが引き継がれるため、再度、フォントサイズの設定などを行う必要がありません。ただし、ラベルの表示も引き継がれるので、Caption欄をそれぞれ、「素線径[mm]」、「有効巻数」、「ばね定数[N/m]」などと書き換えてください。ちなみに、テキストボックスは入力欄としても出力欄としても使えます。

 入出力欄が出来上がったら、計算を指示するボタンを作成します。ツールボックスの下から2段目、左から2列目の立体的な□で表示された部品がボタンです。これをクリックし、ユーザーフォーム上で、再度クリックすると、ボタンが出来上がります。図の右上の「Button」の位置に重なるように、マウスで大きさと位置を調整します。

 次にプロパティウィンドウがButton1となっていることを確認して、Font欄をクリックすると、右側に「...」が現れるので、これをクリックすると、字体や大きさを設定できるウィンドウが表示されます。例えば、フォントサイズを20に設定します。また、Caption欄を「計算」に書き換えます。

図10 入力欄やボタンを設置

Copyright © ITmedia, Inc. All Rights Reserved.