フォームに画像を表示するにはどうするの?
![フォームに画像を表示するにはどうするの?](gazo2023/macro_2023_userform_14m.png)
動画でExcel フォームに画像を表示するにはどうするの?
フォームに画像を表示する、Imageコントロールの使い方
動画版「ユーザーフォーム講座」です。
今回はユーザーフォームに画像を表示するケースを考えていきます。
ユーザーフォームに画像を表示するといっても
ユーザーフォームの土台となるフォームに表示するのではなくて
イメージコントロールという画像専用のコントロールがあるので
それを使って表示するという内容です。
マクロ動画 フォームに画像を表示するにはどうするの?
フォームに画像を表示する
フォームに画像を表示するとフォームの印象はどのように変わるでしょうか?
基本的には同じユーザーフォームですが、画像があるとないとでは印象が違います。
![NAMAE1](gazo2023/macro_2023_userform_14m_02.png)
では、フォームに画像を表示するためのImageコントロールはどのように配置して、どんなコードを書けばよいのかを紹介します。
![NAMAE2](gazo2023/macro_2023_userform_14m_02.png)
ツールボックスからImageコントロールを選択して、Formの上で、左上にしたいポイントをクリックして、右下の位置でクリックするとImageコントロールが挿入されます。
サイズはドラッグして調整することができます。
![NAMAE3](gazo2023/macro_2023_userform_14m_03.png)
画像が固定でいいのなら、Imageコントロールのプロパティから、Pictureを指定することができます。
![NAMAE4](gazo2023/macro_2023_userform_14m_04.png)
Pictureプロパティの右にあるボタンをクリックして画像を指定します。
指定できる画像は、ビットマップ(*.bmp, *.dib)、GIFイメージ(*.gif)、JPEGイメージ(*.jpg)、メタファイル(*.wmf, *.emf)
アイコン(*.ico, *.cur)です。
![NAMAE5](gazo2023/macro_2023_userform_14m_05.png)
フォームに画像が表示されました。Imageコントロールのサイズを調整しても、画像サイズは変更されません。
画像は予めサイズをフリーソフトなどを使って変更しておくと良いです。
![NAMAE6](gazo2023/macro_2023_userform_14m_06.png)
UserForm_Initializeで起動時に画像を読み込む
Pictureプロパティに直接画像アドレスを入力するのでは、変更などが大変ですから、 UserForm_Initializeで画像を表示するようにコードを書くこともできます。
![NAMAE7](gazo2023/macro_2023_userform_14m_07.png)
Private Sub UserForm_Initialize() Dim imgpath As String imgpath = ThisWorkbook.Path & "\img\sf_001.jpg" Image1.Picture = LoadPicture(imgpath) End Sub
画像のおさまりが悪い時は、予め画像のサイズを調整しておくか、 もしImageコントロールのサイズを変更できるなら、サイズを変更することで調節することもできます。
![NAMAE8](gazo2023/macro_2023_userform_14m_09.png)
Imageコントロールのサイズを変更して、フォームを起動しました。
![NAMAE9](gazo2023/macro_2023_userform_14m_08.png)
読書目録に画像を表示してみる
さて、もう少し実用的な画像表示の例を紹介しましょう。
こちらのフォームは、ユーザーフォーム基礎編の3回で使用した読書記録を作成するフォームです。
そのフォームに本の表紙画像を表示させてみましょう。
![NAMAE10](gazo2023/macro_2023_userform_14m_10.png)
ユーザーフォームを起動し、画像名を入力します。この時拡張子は要りません。 コードの方で拡張子を追加するように書いています。表示ボタンで画像を表示します。
![NAMAE11](gazo2023/macro_2023_userform_14m_11.png)
上記のコードが以下になります。画像があるフォルダの場所は、使用する環境で変更する必要があります。
![NAMAE12](gazo2023/macro_2023_userform_14m_12.png)
Private Sub btn_show_Click() If Not txt_imagename.Text = "" Then Dim imgname As String imgname = ThisWorkbook.Path & "\img\re\" & _ txt_imagename.Text & ".jpg" Image1.Picture = LoadPicture(imgname) End If End Sub