社員名簿の「フォーム」画面にシートの画像を表示する方法

フォーム画面 VBA
フォーム画面

エクセルには、データを表示・編集するための専用画面を表示する「フォーム」ってのがあんねん。

せやけどな、項目の配置は固定で、画像が表示できんねん。

そやからな、自分でフォーム画面をマクロで作ってみよういうことや。画像表示も検索もできたらいうことなしや。

自分がデザインした表示画面ならデータの確認作業が楽になるやろ?

まずフォームにデータを表示できるようにしょうか。

1.Excelの「フォーム」機能を使って社員名簿のデータを表示する方法

まず、社員名簿をExcelシートに入力しといてな。

例えば、シートのA1に「名前」、B1に「部署」、C1に「電話番号」みたいに、項目を入れとくんや。ほんで、2行目から各社員のデータを入力しとくねん。

入力したデータの範囲を選択するんや。例えば、A1からC10までデータがあるんやったら、その範囲を選択する。

Excelのリボンに「フォーム」ボタンがないかもしれへんけど、心配せんといてや。リボンに「フォーム」を追加する方法はまず、リボンの空いてるところを右クリックして、「リボンのユーザー設定」を選ぶんや。「コマンドの選択」ドロップダウンで「すべてのコマンド」を選ぶんや。

そんで、「フォーム」を探して、それを右側のリスト(たとえば、「ホーム」タブ)に追加するねん。

リボンに「フォーム」ボタンが追加されたら、それをクリックするんや。選択した範囲のデータがフォームに表示されるから、新しいデータを入力したり、既存のデータを編集したりするんが簡単になるで。

フォームを使って、データを入力したり、次のレコード(行)に進んだり、前のレコードに戻ったり、特定の条件でデータを検索することもできるねん。

これで、Excelで社員名簿を「フォーム」画面で表示して操作する方法が分かるはずやで。

1.独自の画面フォームを作る

住所録や商品在庫など、エクセルをデータベースのように利用することもあると思います。このような時、自分の思い通りにデザインした表示画面があるとデータの確認が楽になります。このような写真入りの社員名簿データを、1件ごとにカード形式で表示するフォームを作成します。

前半は、フォーム作成と「スクロールバー」でデータを切り替える方法までです。後半は検索機能を組み込み、フォームを完成させます。

まず初めに、社員名簿を用意します。その際、データ件数など、フォームでの表示に必要な情報をシートの中に加えておきます。「写真」欄には、その画像ファイルの「パス」を入力します。

=SUBTOTAL(3,A5:A13)
集計方法 範囲
      
A2セルにデータ件数を計算するための関数「SUBTOTAL」を使った数式を入れます。最初の「3」は「データのあるセルを数える」ためです。

「オートフィルタ」機能で抽出した結果だけを合計したい場合は SUM 関数ではなく、シート上に表示されたデータだけを集計する SUBTOTAL 関数を使います。

4行目に項目名を、5行目以降に実際のデータを入力します。Cドライブの「社員」フォルダには画像を保存します。A2セルにデータ件数を計算するための関数「SUBTOTAL」を使った「数式」を、B2セルには1件目データの行位置「7」を入力しておきます。

ワークシート画面から「VBE」マクロ編集を呼び出し、新規のフォームを追加します。すると、VBA 画面には”白紙”のフォームが表示されます。ここに、各種の”部品”を配置するのです。

まず最初に、フォームの「タイトル名」を変更します。それには「プロパティウィンドウ」を「表示」メニューから出して「Caption」項目で指定し、この文字を「社員フォーム」と書き換えます。

タイトルバーの文字が「社員フォーム」に変わりました。次に「ツールボックス」から「ラベル」を選び、フォーム上にドラッグします。

次に「表示」→「オブジェクト」からラベルが配置されました。画面左下の「Caption」欄の文字を「社員番号」と変更します。

ラベル上に「社員番号」と表示されました。

残りの部品をフォームに配置します。「ツールボックス」で部品の種類を選び、ドラッグして作成、位置や大きさを修正します。このとき部品ごとに「プロパティウィンドウ」で細かい設定をしておかなければなりません。

「ラベル」は表示する文字を入力画像表示用の「イメージ」枠は「画像を領域いっぱいに表示させる設定」に、「コマンドボタン」は、ボタン名を表示させる以外に、「クリア」「実行」の2つのボタンは、グレー表示にしておきます。

「ラベル」は表示する文字を入力①~③、画像表示は「PictureSize Mode」の「画像を領域いっぱいに表示させる「3」を選択し、「コマンドボタン」に「クリア」「実行」のグレー表示にして使えないようにしておきます⑪⑫

これで部品の配置が終わりました。

引用:PC21 牧村あきこ
引用:PC21 牧村あきこ

マクロのコードでフォームの初期設定

画面左上の「コードの表示」ボタンをくりっくします。その右の赤枠から「User Form」を選び、その右のボックスから「Initialize」(初期化)を選択します。

フォームを表示すると、「UserForm Initialize」という特別な名前のマクロが自動的に実行されるので、ここに初期設定(Initialize)を記述します。

フォームの初期設定では、「スクロールバーの初期化」「フォームに1件目のデータを表示」「コンポボックスの初期化」という3つの処理を行っています。

Private Sub UserForm Initialize() ①マクロ名を定義
Dim 開始行 As Long    ②変数を用意

開始行=Range(“B2”).Value     ③開始行の設定
With ScrollBar1     
.Min=1     ⑤最小値を設定
. Max=Range(“A2”).Value     ⑥最大値を設定
.Value=1     ⑦値を1に設定
Lavel4.Caption=.Value & “/” & .Max   ⑧ラベルに表示  
End With

TextBox1.Value=Cells(開始行,1).Value   ⑨テキストボックスに値を表示
TextBox2.Value=Cells(開始行,2).Value
TextBox3.Value=Cells(開始行,4).Value
   ComboBox.Value=Cells(開始行, 3).Value ⑩コンボボックスに値を表示
Image1.Picture=LoadPicture(TextBox3.Value  ⑪イメージ枠に写真を表示

With ComboBox1
.Clear   ⑬一覧データを消去
.AddItem”営業”   ⑭一覧データを追加
   .AddItem”管理”
   . AddItem”総務”

End With
End Sub

With Scrollbar1~End With ④スクロールバーの初期設定
With ComboBox1~End With ⑫コンポボックスの設定

引用:PC21 牧村あきこ

何なりとお申し付けください。