VBA:Can';t单击元素后更改图像控制图片
设置 我有一个带图像控件元素的Excel VBA用户表单。单击表单中的按钮时,图像控件的VBA:Can';t单击元素后更改图像控制图片,vba,excel,userform,Vba,Excel,Userform,设置 我有一个带图像控件元素的Excel VBA用户表单。单击表单中的按钮时,图像控件的图片源将使用以下代码进行设置/更新: Set MyForm.imgControl.Picture = LoadPicture(pathToFile) 问题 当用户单击图像控件时,更新其图片源代码不再起作用。无论何时在工作流中单击图像控件,都会出现此问题: 示例1:用户单击按钮以设置图片(并且图片设置正确)。用户单击图像控件。用户单击其他按钮更改图片->显示的图片不更改 示例2:用户在表单加载后立即单击图像
图片
源将使用以下代码进行设置/更新:
Set MyForm.imgControl.Picture = LoadPicture(pathToFile)
问题
当用户单击图像控件时,更新其图片
源代码不再起作用。无论何时在工作流中单击图像控件,都会出现此问题:
- 示例1:用户单击按钮以设置图片(并且图片设置正确)。用户单击图像控件。用户单击其他按钮更改图片->显示的图片不更改
- 示例2:用户在表单加载后立即单击图像控件。用户点击按钮更改图片->显示的图片不变
控件确实具有Click/MouseDown/。。。事件(为空),但它们不带Cancel参数。正如您所说,这听起来像是一个bug,但作为一种解决方法,我建议在更改图片后强制重新绘制:
Set MyForm.imgControl.Picture = LoadPicture(pathToFile)
MyForm.Repaint
加载图片后重新绘制表单是否有帮助?使用VBA有时很难确定是错误还是“功能”。您是否尝试过先清除
imgControl
而不是添加新图像的功能?@Rory好主意!加载图片后添加MyForm.Repaint
。请随意添加您的评论作为答案,我至少会给它一个+1。仍然希望有人能找出根本原因。@Noceo:清除控件(Set MyForm.imgControl.Picture=Nothing
)没有帮助。顺便说一句,@Rory:在加载图片之前重新绘制也很有效-除了第一次没有图片集时-对我来说似乎越来越像一个bug。