VBA中的ActiveX属性控件

时间:2019-06-20 16:24:01

标签: excel vba activex

我想管理工作表上许多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代码中的名称?

1 个答案:

答案 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