T-03 クリックでイメージ入れ替える2022.05.03
次の書籍の第1章~5章を公開しています。
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」
フォーム上に配置されたイメージコントロールの画像を、クリックで入れ替えます。また右クリックで画像を削除します。
サンプルファイル ダウンロード
準備
ユーザーフォームを挿入し、次のコントロールを追加します。
■Imageコントロール
役割:画像を表示
オブジェクト名:Set_Image
個数:1
幅:72(ポイント)
高さ:72(ポイント)
BackStyle:0 - fmBackStyleTransparent
BorderStyle:1 - fmBorderStyleSingle
PictureAlignment:2 - fmPictureAlignmentCenter
PictureSizeMode:1 - fmPictureSizeModeStretch
■Imageコントロール
役割:画像の格納
オブジェクト名:Image1~4
個数:4
幅:48.75 または 72
高さ:72 または 48.75
BackStyle:0 - fmBackStyleTransparent
BorderStyle:1 - fmBorderStyleSingle
サンプルコード
フォームモジュールに記述します。
'フォーム上のイメージをクリックで入れ替える Option Explicit Private lngCount As Long
'■イメージイベント(Set_Image) '+++ MouseDownイベント +++ Private Sub Set_Image_MouseDown(ByVal Button As Integer, _ ByVal Shift As Integer, _ ByVal X As Single, _ ByVal Y As Single) If Button = 1 Then 'マウス左ボタン lngCount = lngCount + 1 If lngCount = 5 Then lngCount = 1 With Controls("Image" & lngCount) Set_Image.Height = .Height '高さ Set_Image.Width = .Width '幅 Set_Image.Picture = .Picture '画像設定 End With ElseIf Button = 2 Then 'マウス右ボタン Set_Image.Picture = Nothing Me.Repaint 'フォーム再描画 End If End Sub
簡単な解説
画像表示用のImageコントロール(Set_Image)でマウスの左ボタンを押すと、lngCount変数が更新され、その値に対応するImageコントロールのプロパティが、Set_Imageに代入されます。
代入されるプロパティは、Height(高さ)、Width(幅)、Picture(画像)です。
画像表示用のImageコントロールでマウスの右ボタンを押すと画像は削除されます。場合によっては画像削除が表示に反映されないケースもあるため、フォームを強制的に再描画しています。
書籍紹介140以上のサンプルファイル付き!
知りたいがすぐわかる! やりたいがすぐできる!
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」(Kindle版)
ユーザーフォームを扱えると、VBAでできることが大きく広がります!
本書では、知りたいこと、やりたいことから、逆引きで学びを深められます。
■ 購入:amazon