Excel 从工作表加载图像
我已经设置了一个Excel用户表单,用于滚动6面骰子并报告结果。当用户按下命令按钮时,我生成一个随机数1-6,然后我希望相应骰子卷的图像显示在用户窗体上。我将骰子图像/形状(如骰子1、骰子2等)放在名为“库存”的工作表中。当我尝试执行以下代码时,我得到了“运行时错误13:类型不匹配”,错误发生在LoadPicture命令中。我意识到我没有必要的If结构来选择与掷骰子对应的pic,但是一旦我弄清楚加载图像的语法,这就足够简单了。建议Excel 从工作表加载图像,excel,vba,image,userform,Excel,Vba,Image,Userform,我已经设置了一个Excel用户表单,用于滚动6面骰子并报告结果。当用户按下命令按钮时,我生成一个随机数1-6,然后我希望相应骰子卷的图像显示在用户窗体上。我将骰子图像/形状(如骰子1、骰子2等)放在名为“库存”的工作表中。当我尝试执行以下代码时,我得到了“运行时错误13:类型不匹配”,错误发生在LoadPicture命令中。我意识到我没有必要的If结构来选择与掷骰子对应的pic,但是一旦我弄清楚加载图像的语法,这就足够简单了。建议 Private Sub btnRollDice_Click()
Private Sub btnRollDice_Click()
Dim DiceNum As Integer
Randomize
DiceNum = Int((6 * Rnd) + 1)
pic1stDie.Picture = LoadPicture(Worksheets("Inventory").Shapes("dice_1"))
End Sub
找出如何以编程方式复制Excel功能的最简单方法是在手动执行任务时录制宏,然后停止录制并检查为您生成的VBA,并根据需要进行调整
- 开发者>录制宏>确定
- 插入>图片>选择您的图片
(或以何种方式显示这些图像)
- 开发者>停止
- 开发人员>宏>选择宏>编辑
- MSDN:
- MSDN:
ActiveSheet.Pictures.Insert("C:\{myPath}\{myFile}.jpg").Select
为了最大限度地提高此任务的学习效果,请花点时间在谷歌上搜索它使用的每个命令。我会在搜索查询的末尾添加“excel msdn”,从而将搜索结果限制在Microsoft开发者网络的官方文档中
一点尝试和错误也会有很大的帮助(当然,在备份之后),这就是我第一次发现宏记录器添加的许多与Select
和Activate
相关的方法可以安全删除的原因
在上面的示例中,完成的代码可能如下所示:
Sub btnRollDice_Click()
Dim DiceNum As Integer
Randomize
DiceNum = Int((6 * Rnd) + 1)
ActiveSheet.Pictures.Insert ("C:\{myPath}\myDice" & DiceNum & ".jpg")
End Sub
如果只是显示同一组图像,您还可以将所有图像(形状)放置在正确的位置(即使在“相同的位置”,彼此重叠),并根据需要将形状的Visible
属性设置为True/False,例如:
ActiveSheet.Shapes("My Die 4").Visible = False 'hides this image
您的答案很好,但OP的目的不是不插入图片,因为图片已经包含在工作表“库存”中?最简单的解决方案是将图片加载到Userform上的6个隐藏图像控件中。然后,您可以使用
pic1stDie.Picture=picdice_1.Picture