1

我的表单中有一个组合框,其中包含一个表格填充列表作为行源。当用户输入该字段,更改某些内容并将其删除以使组合框为空时,我收到错误消息“您尝试将空值分配给不是变体数据类型的变量”。

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

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

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

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

4

2 回答 2

3

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

例如,如果您想在组合框为空的情况下将空字符串分配给字符串变量,那么您可以执行以下操作:

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

至于在错误之前触发 - 在您的代码中的某处,您已经有导致错误的违规代码。你需要找到那个。为了提供更详细和具体的答案,您需要提供更多信息。

于 2013-03-20T18:22:14.623 回答
2

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

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

于 2015-05-23T00:05:26.600 回答