写真付きのユーザーフォーム、画像を表示したタブストリップでタブを切り替えるたびに画像も変える 応用2回

写真付きのユーザーフォーム、画像を表示したタブストリップでタブを切り替えるたびに画像も変える

ユーザーフォーム講座 動画編 応用2回
写真付きのユーザーフォーム、画像を表示したタブストリップでタブを切り替えるたびに画像も変える

動画でExcel 写真付きのユーザーフォーム、画像を表示したタブストリップでタブを切り替えるたびに画像も変える

写真付きのユーザーフォーム、画像を表示したタブストリップでタブを切り替えるたびに画像も変える

動画版「ユーザーフォーム講座応用編2回」です。
今回のユーザフォーム応用編は、前回に引き続きTabストリップをさらに活用するということで、 Tabストリップに該当する画像・写真を表示するという内容になります。
タブストリップのあるユーザーフォームでタブを切り替えるたびに画像も変える方法を紹介します。

マクロ動画 写真付きのユーザーフォーム、画像を表示したタブストリップでタブを切り替えるたびに画像も変える

https://youtu.be/tNYYjJUYXVA

画像付きのタブストリップと画像なしのタブストリップの違い

こちらはTabストリップコントロールを使用したユーザーフォームで作成した社員情報リストです。 Tabをクリックすると、その社員のIDや氏名、所属年齢性別などが表示されるのですが、人数が多いと、顔と名前が結びつかないなんていうことも あるかもしれません。

画像つきのタブストリップ作成20

一方、下のフォームは今回紹介する画像を表示できるようにしたタブストリップのユーザーフォームです。
使い勝手はどちらが良いかと言えば、画像付きの方が良いでしょう。

画像つきのタブストリップ作成1

隣のタブをクリックするとこのように画像もデータもタブに表示されている社員のものに変わります。
たとえこのフォームを利用するのが新人で社員の顔がわからなくても、画像があれば区別できますし、社員の名前を早く覚えることもできます。

画像つきのタブストリップ作成2

今回のフォームには新規入力をクリアするボタンを追加しました。そのコードが右側になります。

画像つきのタブストリップ作成3

UserFormの初期化コード

TabStripのコントロールを配置したユーザーフォームは起動時に初期化して起動した時点では、 すでに初期値のデータが表示されるようになっています。
with構文で挟んでいる部分が指定したリストからタブを追加するコードです。

画像つきのタブストリップ作成4
With TabStrip1
.Tabs.Clear
For i = 2 To ws.Cells(Rows.Count, 2).End(xlUp).row
    .Tabs.Add ws.Cells(i, 2).Value
Next i
End With

そして最後に部品マクロを呼び出しています。
' 初期データの表示
ShowEmployeeInfo 1
の部分です。画像がその部品マクロのコードの全体です。

画像つきのタブストリップ作成5

TabStripに配置したImageコントロールに画像を呼び出すコード

前回のコードに追加した部分がこちらです。
画像のあるアドレスをimgPathという変数にしています。
imgPathは ThisWorkbook.Path & "\img\new\" にあり、
画像名は社員IDと同じなので、ws.Cells(row + 1, 1).Value & ".jpg" としています。とても分かりやすいコードです。

画像つきのタブストリップ作成6
Dim imgPath As String
imgPath = ThisWorkbook.Path & "\img\new\" & _
                ws.Cells(row + 1, 1).Value & ".jpg"
    If Dir(imgPath) <> "" Then ' ファイルが存在していたら
        Image1.Picture = LoadPicture(imgPath)
    Else ' ファイルが存在しない場合、画像をクリア
        Image1.Picture = LoadPicture("")
    End If

また、If~Else構文を使って、もし画像が存在しない時は、
Image1.Picture = LoadPicture("") とし画像を表示しない設定にしています。 これで、画像が存在しなくてもエラーが起きません。


タブの新規追加と入力クリア、登録抹消

社員がふえた場合には、新規追加ボタンにてタブを追加します。

すると、タブが追加されますので、IDや氏名等の必要な情報をテキストボックスに入力してください。
このときに、その入力をなかったことにする場合は、新規入力クリアボタンで、フォーム上に入力したデータを消すことができます。

画像つきのタブストリップ作成7

テキストボックスに入力した内容で社員登録する場合は、社員登録ボタンをクリックします。社員が登録され、シート上の社員リストにもデータが転記されます。
タブのキャプションも登録された名前に変更されています。

画像つきのタブストリップ作成8

今登録したデータを削除する場合は、登録抹消をクリックします。データが抹消されます。シート上のデータが消えて、タブも表示されなくなります。

画像つきのタブストリップ作成9

この時に、抹消記録が、シート上に残るようにしました。

画像つきのタブストリップ作成10

登録したデータは、どのタブデータでも抹消できます。そうすると、社員IDは欠番となります。

登録抹消コードは以下のようになります。
また、行を削除した後、最後に Call UserForm_Initialize と呼び出しています。

画像つきのタブストリップ作成11

コードの意味は以下のようになっています。

画像つきのタブストリップ作成12

では実際に社員IDE-004のデータを削除します。登録抹消をクリックします。

画像つきのタブストリップ作成14

するとシート上のリストのデータも消え、またタブもなくなります。フォームは初期化されてE-001の社員が表示されました。

画像つきのタブストリップ作成15

抹消記録は、このサンプルでは同じシート上に記録してあります。記録が残るので、手違いがあっても訂正できるでしょう。

画像つきのタブストリップ作成16

データが多い時は、タブが全部表示されないこともあります。そのような場合は、TabStripプロパティのMultiRowをTrueにすることで、複数行表示ができます。

画像つきのタブストリップ作成13

いかがでしょうか。便利なタブストリップと画像表示を使って、社員や生徒やメンバーの管理を快適に効率よくすることができます。ぜひお試しください。