【问题标题】:Passing a checkbox control to a function将复选框控件传递给函数
【发布时间】:2020-08-03 13:35:59
【问题描述】:

我正在使用 Access 365 和 VisualBasic。我在一个表单上有许多复选框,我想一次只显示其中的一个子集,所以我想重新定位复选框的顶部,以便无论当前显示哪些,我都可以让它们很好地排列。

所以,我声明了一个复选框数组,我想动态添加这些复选框以显示:

' Array holding the checkboxes that will be displayed, depending upon species, sex, etc.
Dim arrCheckBoxes(cNumCheckboxes) As CheckBox

然后当我确定应该显示一个特定的复选框时,我想使用这个函数将它添加到下一个可用位置的数组中(这也将更新下一个可用位置):

Private Sub AddCheckbox(ByRef arrCheckBoxes() As CheckBox, ByRef chkNew As CheckBox, ByRef intCurrentCheckbox)
    intCurrentCheckbox = intCurrentCheckbox + 1
    arrCheckBoxes(intCurrentCheckbox) = chkNew
End Sub

我的问题是在调用 AddCheckbox 函数的代码中,我无法弄清楚如何传递复选框。我正在使用以下代码(CatNeuter 是我表单中的复选框)。

Call AddCheckbox(arrCheckBoxes, Me.CatNeuter, intCurrentCheckbox)

但是,Me.CatNeuter 始终为 0,所以我认为我得到的只是值,而不是复选框控件本身。我尝试了许多不同的方法,例如:

Me.Controls!CatNeuter
Me.Controls("CatNeuter")

但我只是不知道如何传递实际的复选框,因此我可以通过数组并更改每个复选框的 Top 属性。

问候, 丽丝

【问题讨论】:

  • Set arrCheckBoxes(intCurrentCheckbox) = chkNew
  • 谢谢,但是 chkNew 在进入 AddCheckbox 函数时仍然为 0。
  • 将此添加为AddCheckbox - Debug.Print chkNew.Name, Typename(chkNew) 的第一行,看看输出是什么。
  • 酷 - 它是一个复选框!我只是感到困惑,因为我将鼠标悬停在它上面,它总是 0。谢谢!
  • 我不知道如何接受您的解决方案!

标签: vba ms-access checkbox


【解决方案1】:

对象需要使用Set

Set arrCheckBoxes(intCurrentCheckbox) = chkNew

【讨论】:

    猜你喜欢
    • 2020-12-20
    • 1970-01-01
    • 2021-02-05
    • 2018-12-15
    • 2012-12-31
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    相关资源
    最近更新 更多