我已经设置了Excel Userform,用于滚动6面骰子并报告结果。当用户按下命令按钮时,我生成一个随机数1-6,然后我想在用户表单上显示相应骰子卷的图像。我将骰子图像/形状(例如dice_1,dice_2等)放在名为" Inventory"的工作表中。我得到"运行时错误13:类型不匹配"当我尝试执行以下代码时,错误发生在LoadPicture命令。我意识到我没有选择与骰子卷对应的图片所需的If结构,但只要我弄清楚加载图像的语法就足够了。建议?
Private Sub btnRollDice_Click()
Dim DiceNum As Integer
Randomize
DiceNum = Int((6 * Rnd) + 1)
pic1stDie.Picture = LoadPicture(Worksheets("Inventory").Shapes("dice_1"))
End Sub
答案 0 :(得分:0)
了解如何以编程方式复制Excel功能的最简单方法是在手动执行任务时记录宏,然后停止录制并检查为您生成的VBA,并根据需要进行调整。 / p>
录制宏:
手动完成任务:
停止录制:
查看为您生成的VBA:
......根据需要进行调整:
按照以下步骤为我生成此代码:
ActiveSheet.Pictures.Insert("C:\{myPath}\{myFile}.jpg").Select
为了最大限度地发挥此任务的学习效益,请花点时间了解Google使用的每个命令。我添加" excel msdn"到我的搜索查询结束,从而将结果限制为Microsoft Developer&Network的官方文档。
一个小小的试错也很长(当然是在备份之后),这就是我第一次发现许多与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