用户窗体中的可滚动图像

时间:2012-09-03 18:26:57

标签: vba excel-vba word-vba excel

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

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

Sub Button_Clicked()
    ImageForm.Picture = LoadPicture("appropriate_image_path")
    ImageForm.Show
End Sub

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:5)

这是一个基于我的posts

之一的巧妙小技巧

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

SNAPSHOT(设计时间)

enter image description here

SNAPSHOT(运行时间)

enter image description here

<强> CODE

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