ComboBox为空/ null抛出错误。如何“重置”字段?

时间:2013-03-20 17:59:14

标签: vba ms-access access-vba

我的表单中有一个组合框,表格填充列表为rowsource。当用户输入字段时,更改内容并将其删除以便组合框为空我得到错误“您试图将空值分配给不是变体数据类型的变量”。

问题是我的组合框不允许空字符串,但我也无法在错误之前触发的组合框中找到一个事件。所以我不能使用Len或IsNull来捕获错误。目前我使用这个“解决方法”,但它是非特定的,因为它使用的形式不是组合框的错误事件:

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    Me.myField.Undo
    Response = acDataErrContinue
End Sub

有没有更好的方法来处理这个问题?

我找到了this。但这并没有解决问题。

2 个答案:

答案 0 :(得分:3)

正如Remou在评论中指出的那样,错误是为了响应您在组合框中输入新值后所做的操作。检查组合框事件。如果您不介意类型并且想要使用空值,则可以将变量更改为Variant类型。如果您使用的是实际数据类型,如字符串或整数,则使用NZ()函数筛选出空值。

例如,如果你想为一个字符串变量分配一个空字符串,如果组合框是null,你可以这样做:

dim s as string
s = nz(me.combobox,"")

至于错误之前的触发 - 代码中的某个地方你已经有了导致错误的有问题的代码。你需要找到它。您需要提供更多信息,以便提供更详细和具体的答案。

答案 1 :(得分:2)

这是一个无证的微软“功能”,旨在让你发疯。那些告诉你“查看代码”,“代码中的某个地方”的人并不知道他们在谈论什么。

两个解决方法。更改表中的基础字段以允许空值,或者,我认为这是最好的方法,将组合更改为未绑定的控件并在AfterUpdate事件中设置基础字段。