Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:Can';t单击元素后更改图像控制图片_Vba_Excel_Userform - Fatal编程技术网

VBA:Can';t单击元素后更改图像控制图片

VBA:Can';t单击元素后更改图像控制图片,vba,excel,userform,Vba,Excel,Userform,设置 我有一个带图像控件元素的Excel VBA用户表单。单击表单中的按钮时,图像控件的图片源将使用以下代码进行设置/更新: Set MyForm.imgControl.Picture = LoadPicture(pathToFile) 问题 当用户单击图像控件时,更新其图片源代码不再起作用。无论何时在工作流中单击图像控件,都会出现此问题: 示例1:用户单击按钮以设置图片(并且图片设置正确)。用户单击图像控件。用户单击其他按钮更改图片->显示的图片不更改 示例2:用户在表单加载后立即单击图像

设置

我有一个带图像控件元素的Excel VBA用户表单。单击表单中的按钮时,图像控件的
图片
源将使用以下代码进行设置/更新:

Set MyForm.imgControl.Picture = LoadPicture(pathToFile)
问题

当用户单击图像控件时,更新其
图片
源代码不再起作用。无论何时在工作流中单击图像控件,都会出现此问题:

  • 示例1:用户单击按钮以设置图片(并且图片设置正确)。用户单击图像控件。用户单击其他按钮更改图片->显示的图片不更改
  • 示例2:用户在表单加载后立即单击图像控件。用户点击按钮更改图片->显示的图片不变
如果用户从未单击图像控件,则一切工作都会非常顺利。值得注意的是,单击图像控件并不能明显聚焦它

问题

单击图像控件不应影响图片是否可以更新。如何做到这一点?或者,至少,有人知道为什么会发生被解释的行为,或者它只是一个bug


控件确实具有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。