问题描述
我在工作表上有一堆 ActiveX 控件。我想知道是否可以遍历所有这些并根据某些条件加载图片。
确实,我可以遍历它们并使用以下方法打印它们的名字:
For each obj in SheetName.OLEObjects
Debug.Print obj.Name
Next obj
我也可以简单地加载图片 SheetName.Image1.picture = LoadPicture(Path)
我不能做的是通过如下循环加载图片:
For each obj in SheetName.OLEObjects
SheetName.OLEObjects("Image" & counter).Picture = LoadPicture(Path)
Next obj
使用控件名称加载它们会很乏味:SheetName.Image1.Picture=....,SheetName.Image2.Picture...
希望能得到您的帮助!
解决方法
请尝试下一个方法:
Sub testAddPictureByIteration()
Dim obj As OLEObject,Path As String
Path = ThisWorkbook.Path & "\yourPicture.bmp"
For Each obj In ActiveSheet.OLEObjects
If TypeOf obj.Object Is MSForms.Image Then 'to avoid buttons,text boxes etc.
obj.Object.Picture = LoadPicture(Path)
End If
End Sub