3

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

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

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

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

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

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

谢谢!

4

1 回答 1

5

这是基于我的一篇文章的一个巧妙的小技巧

这个想法是确保图像控件在框架控件中并且图像控件没有边框。图像控件PictureSizeMode也设置为,fmPictureSizeModeClip以便我们可以滚动图像

快照(设计时间)

在此处输入图像描述

快照(运行时间)

在此处输入图像描述

代码

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
于 2012-09-03T18:49:26.207 回答