即効テクニック

ユーザーフォーム関連のテクニック

UserFormの画像をスクロールする

(Excel 97/2000/2002/2003/2007)

UserFormに画像を表示するには、Imageコントロールを使います。 次のコードは、Image1に画像(C:\Pic01.jpg)を表示します。 UserFormにImageコントロールを配置してから実行してください。

Private Sub UserForm_Click()
    Image1.Picture = LoadPicture("C:\Pic01.jpg")
End Sub
ImageコントロールのPictureSizeModeプロパティは、UserFormに配置したImageコントロールの大きさと、表示する画像の大きさが異なるとき、画像をどのように表示するかを設定できます。 画像の一部だけを表示して、スクロールバーによって画像全体を表示できるようにするには、ImageコントロールではなくFrameコントロールを使うと便利です。 Frameコントロールの背景に画像を表示するには、Imageコントロールと同じように
Frame1.Picture = LoadPicture("C:\Pic01.jpg")
のようにします。 Frameコントロールは、ScrollBarsプロパティに「3 - fmScrollBarsBoth」を設定すると、右と下にスクロールバーが表示されます。 しかし、これだけではスクロールバーを使用できません。 スクロールバーで内部の画像をスクロールするには、スクロール領域の大きさをScrollHeightプロパティとScrollWidthプロパティに指定しなければなりません。 このとき指定するHeightとWidthは「画像の大きさ」です。 画像の大きさを取得するのは、単位の変換などの処理が必要で、決して簡単ではありません。 そこで、ここでは簡便な方法で画像の大きさを取得しましょう。 画像を一度、Imageコントロールに表示してみて、Imageコントロールの大きさをFrameコントロールのスクロール領域として設定してやります。 UserFormに、ImageコントロールとFrameコントロールをひとつずつ配置してから下記のマクロを実行してください。
Private Sub UserForm_Click()
    Dim Pic As Object
    Set Pic = LoadPicture("C:\Pic01.jpg")
    Image1.Picture = Pic
    With Frame1
        .ScrollHeight = Image1.Height
        .ScrollWidth = Image1.Width
        .Picture = Pic
    End With
End Sub
同じ画像を、ImageコントロールとFrameコントロールに表示しますので、オブジェクト変数に格納しています。 ImageコントロールのVisibleをFalseにしたり、UserFormに表示されない位置に移動しておけば、UserForm実行時にImageコントロールを隠せます。