左功能返回'类型不匹配'

时间:2015-12-27 18:00:07

标签: vba ms-access access-vba

我有一个包含多个表的数据库,这些表包含记录电话号码的字段。他们的数据类型是短文本,允许零长度 - 不。我已经设置了输入掩码如下:

If Left(Phone, 3) = "011" Or Left(Phone, 3) = "030" Then
    Me.Phone.InputMask = "0000 000 0000;;' '"
ElseIf Left(Phone, 3) = "020" Or Left(Phone, 4) = "0121" Then
    Me.Phone.InputMask = "000 0000 0000;;' '"
ElseIf Left(Phone, 4) = "0191" Then
    Me.Phone.InputMask = "000 000 0000;;' '"
Else
    Me.Phone.InputMask = "00000 000000;;' '"
End If

在除了一个表之外的所有表上,这都可以。但是,对于一个表格,我收到错误消息'运行时错误13类型不匹配'。更奇怪的是,如果放置在同一表格上的未绑定控件中,输入掩码可以正常工作,例如data ='左(电话,3)'。

2 个答案:

答案 0 :(得分:1)

您是否尝试过为Left函数使用字符串变量?

Dim strPhone As String
strPhone = Nz(Me!Phone, "")

If Left(strPhone, 3) = "011" Or Left(strPhone, 3) = "030" Then
    Me!Phone.InputMask = "0000 000 0000;;' '"
ElseIf Left(strPhone, 3) = ' etc.

<强>解决方案:

事实证明,表单上有一个名为Left的文本字段,导致了这个奇怪的错误。

如果重命名字段不切实际,可以使用限定符VBA来避免错误:

If VBA.Left(strPhone, 3) = "011" Then

但不使用reserved words字段名更好。 :)

答案 1 :(得分:0)

[Phone]可以为空,因此请Nz

If Left(Nz(Phone), 3) = "011" Or Left(Nz(Phone), 3) = "030" Then
' etc.