我想管理工作表上许多ActiveX控件的ActiveX属性(例如image1.picture或其他类似的属性)。
是否可以通过使用OLE对象或Shapes或任何其他接受代码中包含变量名的对象的Excel VBA代码实现,以便可以使用For循环更改此变量名,依次复制ActiveX的所有名称我要设置格式的控件?
我正在尝试使用VBA代码将属性分配给工作表中的Activex控件。 ActiveX控件在一个工作表中有许多标签和图像,它们具有顺序名称(即Image1,Image2,...,Label1,Label2等)。
我想使用一个For循环(对于i = 1到n),以便可以根据特定的索引(i)为工作表中的每个Image(i)和Label(i)分配特定的属性。 / p>
我不能使用OLE对象或形状,因为它们不支持我要分配的属性。
With ActiveSheet.oleobjects(variable_name)
.Width = variable_width <----- OK, this works
.Height = variable_height <----- OK, this works
.BackStyle = fmBackStyleTransparent <----- Doesn't work
.BorderStyle = fmBorderStyleNone <----- Doesn't work
.Picture = LoadPicture(path_filename) <----- Doesn't work
End With
.Backstyle
,.Borderstyle
和.Picture
不被支持,错误消息是
“运行时错误438:对象不支持此属性”
我该如何使用可以用变量(variable_name)表示名称的对象来管理这些属性,因此仅使用For循环就可以在工作表中分配许多ActiveX控件的属性,而不必键入所有它们的属性VBA代码中的名称?
答案 0 :(得分:0)
您要设置的这些属性不直接属于OLE对象,而是属于其Object
属性:
With ActiveSheet.oleobjects(variable_name)
.Width = variable_width
.Height = variable_height
.Object.BackStyle = fmBackStyleTransparent
.Object.BorderStyle = fmBorderStyleNone
.Object.Picture = LoadPicture(path_filename)
End With