我希望在用户窗体上的图像控件中查看工作表中的图像。
该图像将根据组合框中的值而变化。我已将一些图像插入(使用:插入 -> 图片)到工作簿的“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/