用户窗体中的可滚动图像

Aus*_*n R 3 excel vba excel-vba word-vba

我有一个带有一堆ActiveX控件按钮或其他任何内容的单词doc,每次单击一个按钮时,都需要在弹出框中显示相应的图像.

我有一个名为ImageForm的用户窗体,这就是我现在正在做的事情:

Sub Button_Clicked()
    ImageForm.Picture = LoadPicture("appropriate_image_path")
    ImageForm.Show
End Sub
Run Code Online (Sandbox Code Playgroud)

这些图像中的每一个都具有8.5英寸的宽度,但它们的高度可以在3到20英寸之间变化(它们是pdf的片段).所以我将用户窗体的宽度设置为略大于8.5英寸,看起来很好.但是我需要能够在用户窗体中垂直滚动图像,因为某些图像可能比用户的监视器更高.

我完全坚持这个.到目前为止我尝试过的是在表单中添加一个框架,然后在表单中添加一个图像控件,并将框架的"ScrollBars"属性设置为vertical.然后,而不是使用"ImageForm.Picture = ..."我使用"ImageForm.ImageControl.Picture = ..."但它不起作用.

任何见解将不胜感激.希望这个问题很清楚,我现在只使用VBA一个月左右.(我很想念Java,所以)

谢谢!

Sid*_*out 5

这是一个基于我的帖子之一的巧妙小技巧

我们的想法是确保图像控件处于帧控制状态,并且图像控件没有边框.此外,图像控件PictureSizeMode设置为fmPictureSizeModeClip可以滚动图像

SNAPSHOT(设计时间)

在此输入图像描述

SNAPSHOT(运行时间)

在此输入图像描述

Private Sub UserForm_Initialize()
    With Frame1
        '~~> This will create a vertical scrollbar
        .ScrollBars = fmScrollBarsVertical

        '~~> Change the values of 2 as Per your requirements
        .ScrollHeight = .InsideHeight * 2
        .ScrollWidth = .InsideWidth * 9
    End With

    With Image1
        .Picture = LoadPicture("C:\Users\Public\Pictures\Sample Pictures\Desert.jpg")
        .BorderStyle = fmBorderStyleNone
        .PictureSizeMode = fmPictureSizeModeClip
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)