vba - 将工作表中的图片获取到 Excel 用户窗体中

标签 vba excel

我希望在用户窗体上的图像控件中查看工作表中的图像。

该图像将根据组合框中的值而变化。我已将一些图像插入(使用:插入 -> 图片)到工作簿的“Sheet1”中,并将它们命名为“Picture1”和“Picture2”。

我创建了以下用户表单:

Form http://im56.gulfup.com/msKyqi.png

这是我尝试使用的代码,以便从工作表加载图像,但不幸的是,这目前不起作用。

Private Sub ComboBox1_Change()

UserForm1.Image1.Picture = LoadPicture(Worksheets("Sheet1").Shapes(ComboBox1.Value))

End Sub

Private Sub UserForm_Initialize()

UserForm1.ComboBox1.Clear
UserForm1.ComboBox1.AddItem "Picture1"
UserForm1.ComboBox1.AddItem "Picture2"

UserForm1.ComboBox1.Value = "Picture1"

UserForm1.Image1.Picture = LoadPicture(Worksheets("Sheet1").Shapes(ComboBox1.Value))

End Sub

每次运行此代码时,我都会收到以下错误:

Error http://im43.gulfup.com/YoWvTp.png

请指教。

最佳答案

我明白了!

由于我使用的是用户窗体,因此有一个解决该问题的方法。

我首先尝试将图像放在用户窗体中,而不是将图像放在工作表中然后尝试将它们加载到表单中,方法如下。

在您的用户表单上创建一个框架: Frame http://im88.gulfup.com/Moy8I6.png

将框架的可见属性设置为“False”: Visible http://im88.gulfup.com/sAIQqh.png

通过添加图片控件并加载图像来插入图像,您可以根据需要添加任意数量的图像: Images http://im88.gulfup.com/oas0EQ.png

命名图像: Name http://im88.gulfup.com/cIO317.png

将所有图像一层一层地拖到框架中,(然后您可以将框架移动到一个角落,这样就不会打扰您:

Drag http://im88.gulfup.com/1fOSut.png Move Away http://im88.gulfup.com/Q1fzKd.png

接下来创建一个图片控件,您将使用它来根据选择显示图片:

Form View http://im88.gulfup.com/X1UVRB.png

在此示例中,我将使用组合框进行选择。现在将以下代码插入到表单中,这非常简单:

    Private Sub ComboBox1_Change()

    ' Image1 is the name of the created picture control
    UserForm3.Controls.Item("Image1").Picture = UserForm3.Controls.Item(UserForm3.ComboBox1.Value).Picture 

    End Sub

    Private Sub UserForm_Initialize()

    UserForm3.ComboBox1.AddItem "Argentina"
    UserForm3.ComboBox1.AddItem "Brazil"
    UserForm3.ComboBox1.AddItem "Chile"

    End Sub

正如您将看到的,带有图片的框架被隐藏,并且图像在图片控件内根据选择而变化:

Result http://im88.gulfup.com/MSqyHF.png

我认为这是比将图像从工作表导出到临时文件夹然后将它们加载回图片控件更好的方法。

关于vba - 将工作表中的图片获取到 Excel 用户窗体中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838203/

相关文章:

vba - 从电子表格 X 读取值,比较电子表格 X 和 Y 之间的相邻值

mysql - 从 MySQL 查询中选择最后一行

excel - 如何在Excel中根据IP地址查找位置

excel公式根据两个条件选择列值

vba - Excel VBA - 在选择单元格时取消保护工作表(单击,而不是双击)

vba - 循环浏览目录中的所有Word文件

excel - 在 Excel 中计算静态随机数(计算一次)

vba - VBA/Excel 中的最早日期为 00 :00:00

python - Excel 的 Beta 分布的 Python 等价物是什么?

excel - 如何引用旧版本的VBA库?