【问题标题】:Copy a component (combobox) with all properties into another components using VBA使用 VBA 将具有所有属性的组件(组合框)复制到另一个组件中
【发布时间】:2014-04-03 11:14:36
【问题描述】:

我想知道如何将所有属性从一个组件复制到另一个相同类型的组件。我解释得更好:

我在 Access 2010 中有一个 UI,在 Form_Load() 中我设置了我的表单的所有组合框的属性,如下所示:

For Each cCont In Me.Controls
       If TypeName(cCont) = "ComboBox" Then
           cCont.RowSourceType = "Value List"
       End If
Next cCont

然后我有不同的组合框,我可以在其中添加他们的信息:

 cbUiUnit.AddItem "°C"
 cbUiUnit.AddItem "°F"

 cbTxUnit.AddItem "°C"
 cbTxUnit.AddItem "°F"

 cbUiUnit.DefaultValue = "cbUiUnit.ItemData(0)"
 cbTxUnit.DefaultValue = "cbTxUnit.ItemData(0)"

我想更自动化地执行此操作,因为对单位的每次更改我都需要执行两次。我可以像以前一样做另一个For Each cCont In Me.Controls,但问题是我拥有的不仅仅是这两个组合框;都有不同的值。

我在设置cbUiUnit的所有数据后尝试做cbTxUnit = cbUiUnit,但它只将cbUiUnit.Value复制到cbTxUnit。所以cbTxUnit中不存在所有添加的项目。

谢谢

【问题讨论】:

  • 有些属性是“只读”的,所以不能复制“ALL”。需要更改多少个组合框?
  • 如果我可以将 DefaultValue 和 Additional Items 从一个组合框复制到另一个组合框,我已经很高兴了。它只有 2 个组合框 cbUiUnitcbTxUnit 但主要问题是我需要经常更改这些单位,这取决于另一个组合框的选择(重量、速度、温度、距离......)。

标签: vba ms-access combobox ms-access-2010


【解决方案1】:

你应该创建一个函数来为你完成这项工作

Private Function PopulateCombobox(inCbo as ComboBox) 
   inCbo.AddItem "°C"
   inCbo.AddItem "°F"
   inCbo.DefaultValue = inCbo.name & ".ItemData(0)"
End Function

那你就可以这样称呼了

PopulateCombobox cbUiUnit
PopulateCombobox cbTxUnit

然后您需要进行的任何更改都可以普遍应用并位于 acer 中心。

【讨论】:

  • 谢谢!像魅力一样工作!
  • @EricPb 不客气,我看到了您的编辑并对其进行了一些更改。
猜你喜欢
  • 1970-01-01
  • 2017-10-10
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多