【发布时间】:2019-06-20 16:24:01
【问题描述】:
我想管理工作表上许多 ActiveX 控件的 ActiveX 属性(例如 image1.picture 或其他类似属性)。
这是否可能通过 Excel VBA 代码使用 OLEobjects 或 Shapes 或任何其他接受在代码中具有变量名称的对象,以便该变量名称可以通过 For 循环更改,按顺序复制 ActiveX 的所有名称我要格式化的控件?
我正在尝试使用 VBA 代码将属性分配给工作表中的 Activex 控件。 ActiveX 控件是工作表中的许多标签和图像,它们具有连续的名称(即 Image1、Image2、...、Label1、Label2 等)。
我想使用 For 循环(For i = 1 到 n),因此我可以根据特定索引 (i) 为工作表中的每个 Image(i) 和 Label(i) 分配特定属性。
我不能使用 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 代码中的名称?
【问题讨论】:
-
ActiveSheet.oleobjects(variable_name).Object.BackStyle等应该可以工作