VBA checkbox.visible = true不起作用

时间:2013-12-03 18:35:07

标签: vba checkbox ms-access-2010

我有一个子表单绑定到名为AdditionalTopics的表。子表单有4个复选框,每个复选框都绑定到AdditionalTopics表中的相应字段。子窗体使用Program_ID字段连接到主窗体。现在,如果AdditionalSubTopics表中不存在Program_ID,则子窗体变为空白。我写了一些vba代码,当记录集为空时,使子窗体上的复选框可见。记录集获取执行以下查询:

select Program_ID from AdditionalSubTopics where Program_ID =  '" & progID & "';

和progID包含主窗体programID字段的值。 我的代码看起来像这样:

If rsAddTopic.EOF = True Then
 Me![Additional_Topic subform].Form!chkEducation.Visible = True
 Me![Additional_Topic subform].Form!chkHealth.Visible = True
 Me![Additional_Topic subform].Form!chkEnvSust.Visible = True
 Me![Additional_Topic subform].Form!chkCommEconDev.Visible = True
End If

此处如果记录集为空,则复选框应该可见但不起作用。

有人可以帮忙吗 谢谢

@GordThompson。你是对的。复选框绑定到AdditionalTopics表,主表单连接到Program表。并非所有程序都在AdditionalTopics表中列出了主题。因此,当我在主窗体上选择AdditionalTopics表中没有记录的记录时,子窗体变为空白。我猜这就是它应该如何运作。但是我不希望它变成空白,而是子窗体应该显示选中非选项的复选框,允许用户选择将在AdditionalTopics表中插入新记录的框。要做到这一点,我需要创建未连接到主窗体的子窗体,并且复选框不限于任何表,并编写一些vba代码来更新表,或者有更好的方法来获取它。请帮忙。

1 个答案:

答案 0 :(得分:0)

你有任何错误吗?这应该有效,所以我想知道是否在表单上没有更新可见性。

尝试以下操作并告诉我它是否有帮助:

If rsAddTopic.EOF = True Then
 Me![Additional_Topic subform].Form!chkEducation.Visible = True
 Me![Additional_Topic subform].Form!chkHealth.Visible = True
 Me![Additional_Topic subform].Form!chkEnvSust.Visible = True
 Me![Additional_Topic subform].Form!chkCommEconDev.Visible = True
 DoEvents
End If

在表单上的记录集更改后会发生Form_Current事件。这可能是一种避免DoEvents的方法(性能密集或他们说)。