PR

【VBA】ユーザーフォームに画像を表示する

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、Ryoです。
VBAでUserFormを扱う際に、言葉での説明ではなく画像を表示することで視覚的にわかりやすくしたいこともあると思いますので、今回はフォーム上に画像を表示する方法について書いてみたいと思います。

スポンサーリンク

1.サンプル概要

先ずエディタの挿入からユーザーフォームを選び、ツールボックスから「イメージ」を貼り付け、後は画像表示用のコマンドボタンを二つ貼り付けます。CommandButton1は画像表示用、CommandButton2は閉じる為に使います。

貼り付けた「イメージ」コントロールはプロパティウィンドウの「PictureSizeMode」から、3-fmPictureSizeModeZoomを選択しておくと画像をイメージコントロールサイズに合わせてくれます。

このフォームを使って画像表示を実行すると、以下の様になります。

何となく先日私が撮った月の画像を載せてみました(笑)

2.サンプルコード

◆Form表示

本サンプルは特にフォーム表示位置指定せず、表示だけさせています。

Sub ボタン1_Click()

 UserForm1.Show

End Sub

シート上にボタンを配置して、このようにUserForm1.Show だけで表示してくれます。
位置を指定して表示する方法などについては、先日の記事で書いていますので良かったら確認してみてください。

【VBA】ユーザーフォームボタンの有効/無効、フォーカス指定
こんにちは、Ryoです。 VBAで扱うUserForm(ユーザーフォーム)のコマンドボタンですが、不特定多数の人間が扱う場合は違うボタンを押してしまったり、ダブルクリックしてしまって不要なエラーにつながってしまうこともあります。 今回はその...

◆UserFormの「画像表示」ボタン

Private Sub CommandButton1_Click()

 Image1.Picture = LoadPicture("C:\Users\user\Desktop\moon.jpg")
 
End Sub

フォーム上に設けた画像表示ボタンをダブルクリックして生成されるPrivate Sub CommandButton1_Click()の中に記述しますが、画像を表示するには

オブジェクト.Picture = LoadPicture(画像が保存されているPath)

このように記述します。
サンプルで使用した画像はデスクトップに置いてあるので、その指定となっています。
実行ファイルと同じ場所にあるのであれば、

Image1.Picture = LoadPicture(ThisWorkbook.Path & “\moon.jpg”)

これでもOKです。
ボタンをクリックすれば画像が表示されると思います。

◆UserFormの「閉じる」ボタン

ここは以前の記事でも書いていますが、念のため書いておきます。

Private Sub CommandButton2_Click()

  Unload UserForm1

End Sub

閉じる場合は、Unloadで閉じるUserFormを指定すればOKです。

◆参考・・・フォーム表示と同時に画像を表示させたい場合

おそらく実運用上ではフォーム表示する時点で画像を表示させたいことが多いかと思いますので、その場合を説明します。

UserFormのボタンをクリックしてコードエディタ画面が開いていると思いますが、そこにフォームの初期設定を記述します。

Private Sub UserForm_Initialize()

 Image1.Picture = LoadPicture("C:\Users\user\Desktop\moon.jpg")

End Sub

このPrivate Sub UserForm_Initialize()は自分で入力しても良いですが、エディタ画面のリスト表示から選ぶこともできます。

これらを選んでもPrivate Sub UserForm_Initialize()が作られます。
その中に先程の画像を表示する記述をしておくことで、フォームが画像を読み込んだ状態で表示されるようになります。

3.まとめ

フォームに画像を表示すること自体は、このように簡単な記述でできますので用途によっては視覚的にわかりやすいものを作ることが出来ますのでお薦めです。
私の場合は生産工程の製品セット位置を冶具画像を使って表現したりしてますね。




以上、ユーザーフォームに画像を表示する方法についてでした!
今回の記事が何かの参考になれば幸いです。

Ryo

タイトルとURLをコピーしました