特集
» 2015年06月08日 10時00分 公開

これは使える! 設計現場のExcel:いつもの設計シートをアプリに簡単変身! 「ねじ寸法表検索」アプリを作ろう (3/4)

[伊藤孝宏,MONOist]

ウィンドウを実装する

 次にウィンドウを実装する方法について説明します。まず、ウィンドウに表示させる背景画像を用意します。CADなどで作図して画像を用意します(図6)。



図6 画像の例

 画像が用意できたら、「Alt+F11」キーを押して「VBAエディタ」を起動し、ウィンドウを作成します。VBAエディタについては、前回を参考にしてください。

 VBAエディタのメニューで「挿入→ユーザーフォーム」とクリックし、ユーザーフォームを作成します。ユーザーフォームはデフォルトでは、大きさが240×180ピクセルとなりますので、見やすいウィンドウサイズに変更します。

 左下のプロパティウィンドウで、Width(幅)を500、Height(高さ)を250に変更してください。キャプション(タイトル)も設定できます。例えば、「メートル並目ねじ寸法」などに変更すると、ウィンドウに表示されます。

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

 さらに画像をユーザーフォームの大きさに合わせるために、「Picture Size Mode」欄で「1-fm Picture Size Mode Stretch」を選択してください。すると、図7に示すように、ユーザーフォームいっぱいに画像が広がります。

図7:ユーザーフォームの作成

 画像はユーザーフォームに組み込まれるので、以降、画像ファイルは不要です。

 作成したユーザーフォームの上に必要な部品を配置していきます。ツールボックス最上段の右端のコンボボックスアイコンをクリックして、ユーザーフォーム左上に配置してください。

 同じく、最上段の左から2番目、「A」と表示されたラベルアイコンをクリックして、図8を参考に配置してください。

図8:部品の配置

 デフォルトでは小さな文字が表示されるので、コンボボックスもラベルもプロパティの「Font」欄右の「…」をクリックして、表示されるウィンドウでフォントサイズを12程度に設定してください。

 必要な部品を配置したら、次はコードを記述していきます。

 VBAエディタの左上に表示されるプロジェクトウィンドウの左端のアイコンをクリックしてコードを表示させます。あるいは「表示→コード」もしくは「F7キー」を押してもコードを表示できます。

 図9に示す記載済みのコードを、順に内容を説明していきます。

図9:下側に記載された下記は、コンボボックスに項目を設定させます。

 「UserForm_Initialize()」とは、ユーザーフォームが表示されたら実行されるプログラムです。2行目の「ComboBox1.List」はコンボボックスの項目で、ここに「Sheet1.Range(“a5:a44”)」、すなわち「表の1列目の項目」を設定します。

Private Sub UserForm_Initialize()
ComboBox1.List = Sheet1.Range("a5:a44").Value
End Sub

 上側に記載された下記は、コンボボックスで項目を選択した際の動作を指示します。

 「ComboBox1_Change()」はコンボボックスに変化があったら実行されるプログラムです。1行目の「Sheet1.Cells(2,1)」はExcelシートの2行1列目でA2セルになります。ここにコンボボックスで選択された項目を設定します。

 「ComboBox1.ListIndex」はコンボボックスで選択した項目が何番目かを0番から始まる整数で返します。表はタイトルを除いて、5行目から始まっていますので、「ComboBox1.ListIndex」に5を加えた行の1列目が選択された項目になります。これで、コンボボックスで選択された項目がシートのA2セルに反映され、vlookup関数により、該当する行がシート2行目に表示されます。

 コードの2行目以降は、シート2行目の各列をユーザーフォーム上のラベルに反映させるもので、Label.Caption=Sheet1.Cells(2、列)で指定した列の内容をラベルに表示させます。「Sheet1.Cells」の前に、「”谷径:”&」として、表示された内容の説明を一緒に表示させます。

Private Sub ComboBox1_Change()
Sheet1.Cells(2, 1) = Sheet1.Cells(ComboBox1.ListIndex + 5, 1)
Label1.Caption = "谷径:" & Sheet1.Cells(2, 6)
Label2.Caption = "有効径:" & Sheet1.Cells(2, 5)
Label3.Caption = "山径:" & Sheet1.Cells(2, 4)
Label4.Caption = "ピッチ:" & Sheet1.Cells(2, 2)
Label5.Caption = "山の高さ:" & Sheet1.Cells(2, 3)
End Sub
図10:コードの記述

 ここまでできたら、動作の確認をしてみてください。動作は、VBAエディタのツールバーで横向き三角のアイコンをクリックするか、「実行→Subユーザーフォームの実行」、あるいは「F5キー」を押します。

 ここまで入力したシートは以下のリンクからダウンロードできます。

Sample3.xls

 無事、動作したら、次に、ファイルを開くと自動でウィンドウが開き、しかもシートが非表示となるようにしてみます。ウィンドウだけが表示されるようになり、見た目も良くなります。その前に、VBAエディタに戻るために、ユーザーフォームを閉じてください。

Copyright © ITmedia, Inc. All Rights Reserved.