【发布时间】: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。谢谢!
-
我不知道如何接受您的解决方案!