Microsoft Access VBA 2010 如何创建组合框和数组?
Posted
技术标签:
【中文标题】Microsoft Access VBA 2010 如何创建组合框和数组?【英文标题】:Microsoft Access VBA 2010 how to create and array of comboboxes? 【发布时间】:2015-04-03 15:26:11 【问题描述】:我是 VBA 和 Microsoft Access 的新手。我已阅读有关此主题的几篇文章,但无法弄清楚我做错了什么。或者如果我可能缺少参考?我想将几个组合框添加到一个数组中,然后重用该数组来执行各种操作,例如使它们可见或不可见等。
我一直在尝试的代码是这样的——我尝试使用 Control、AccessObject、ComboBox 作为数组类型并得到:对象变量或未设置块变量——知道我做错了什么吗?
Private Sub Form_Load()
Dim arrayComboBox(3) As Control
Set arrayComboBox(0) = Me.cmbTourStops1
Set arrayComboBox(1) = Me.cmbTourStops2
arrayComboBox(0).Visible = False
arrayComboBox(1).Visible = True
End Sub
谢谢!
【问题讨论】:
欢迎来到 Stack Overflow。我将您的代码粘贴到我自己的表单模块中,并更改了 cmbTourStops 名称以匹配我的。该代码在 Access 2010 中运行时没有出现错误,并且符合我的预期。我不明白为什么它会为您抛出错误。你能分享一份你的数据库吗? 嗨@HansUp 我似乎无法访问数组值以进行如下所述的更改。谢谢你的帖子。 【参考方案1】:您的组合框数组应在表单级别声明,即在模块顶部和任何子例程或函数之外。这样,表单代码中的所有例程都可以看到它。此外,您可以使您的例程更通用(较少依赖特定的控件名称)。见下文:
Option Compare Database
Option Explicit
Private arrayComboBox() As ComboBox
Private Sub Form_Load()
Dim howMany, i As Integer
Dim ctl As Control
Dim cbo As ComboBox
'--- count how many ComboBoxes we have on this form
howMany = 0
For Each ctl In Me.Form.Controls
If ctl.ControlType = acComboBox Then
howMany = howMany + 1
End If
Next ctl
'--- now properly size the array and store the
' controls
If howMany > 0 Then
Debug.Print "we found " & howMany & " ComboBoxes on the form"
ReDim arrayComboBox(1 To howMany) As ComboBox
i = 1
For Each ctl In Me.Form.Controls
If ctl.ControlType = acComboBox Then
Set arrayComboBox(i) = ctl
Debug.Print "added " & ctl.Name
End If
Next ctl
End If
End Sub
【讨论】:
以上是关于Microsoft Access VBA 2010 如何创建组合框和数组?的主要内容,如果未能解决你的问题,请参考以下文章