在不同的床单上相同的组合框

时间:2014-11-09 06:37:35

标签: excel excel-vba combobox excel-2013 vba

我认为这可以应用于Excel中的任何Form控件。我有一个组合框,可以从ControlData表中获取值。我在另一个工作表中创建Combo Box,该工作表引用了列表值所在的ControlData工作表单元格。

我可以将Combo Box对象复制到不同的工作表上,但是当我在一个工作表上更改该对象的属性(比如,更改值来自的范围)时,它只会在工作表上更改我改变了属性。我想普遍改变属性,所以我只需要做一次。

我该怎么做?

1 个答案:

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