我认为这可以应用于Excel中的任何Form
控件。我有一个组合框,可以从ControlData
表中获取值。我在另一个工作表中创建Combo Box
,该工作表引用了列表值所在的ControlData
工作表单元格。
我可以将Combo Box
对象复制到不同的工作表上,但是当我在一个工作表上更改该对象的属性(比如,更改值来自的范围)时,它只会在工作表上更改我改变了属性。我想普遍改变属性,所以我只需要做一次。
我该怎么做?
答案 0 :(得分:1)
但是当我在一张纸上更改该对象的属性(例如,更改值来自的范围)时,它只会在我更改属性的工作表上更改。
您无法直接更改一个控件的属性,并希望自动更改控件的其余部分 。如果它们都指向相同的范围,那么您在范围中所做的任何更改都将反映在其余部分属性中。
话虽如此......是否有可能改变一个人的属性并期望将其转移到其他人身上?
是即可。 catch 是您必须使用VBA。
要实现这一点,您必须编写一个单独的宏,它将循环遍历所有工作表中的所有组合框,然后更改属性。
在下面的示例中,我将更改一个属性。你将不得不管理其余部分。
Sub Sample()
Dim ws As Worksheet
Dim shp As Shape
For Each ws In ThisWorkbook.Sheets
'~~> Loop through all the sheets
For Each shp In ws.Shapes
'~~> Since you copied the combo across,
'~~> they will have the same name. Change as applicable
If shp.Name = "Drop Down 1" Then
'~~> Set their range
shp.ControlFormat.ListFillRange = "Sheet1!A1:A20"
End If
Next
Next ws
End Sub