2015-01-03 78 views
0

我想在窗体中编写组合框,以便它自动筛选用户键入的选项。我有一个代码,但我不断收到编译错误。这里是我的代码:VBA编译错误:语句的预期结束

Private Sub UTIL_FCLTY_ID_Change() 
    If Nz(Me.UTIL_FCLTY_ID.Text) = “” Then 
     Me.Form.Filter = “” 
     Me.FilterOn = False 
    ElseIf Me.UTIL_FCLTY_ID.ListIndex <> -1 Then 
     Me.Form.Filter = “[UTILITY FACILITY TYPE NAME:] = ‘” & _ 
       Replace(Me.UTIL_FCLTY_ID.Text, “‘”, “””) & “‘” 
     Me.FilterOn = True 
    Else 
     Me.Form.Filter = “[UTILITY FACILITY TYPE NAME:] Like ‘*” & _ 
       Replace(Me.UTIL_FCLTY_ID.Text, “‘”, “””) & “*'” 
     Me.FilterOn = True 

    End If 

    Me.UTIL_FCLTY_ID.SetFocus 
    Me.UTIL_FCLTY_ID.SelStart = Len(Me.UTIL_FCLTY_ID.Text) 

End Sub 
+2

该代码示例具有排版引号('‘’')而不是简单的引号('“”')。如果你的真实代码还包含排版引号,你应该将它们改为普通引号。 – HansUp

+0

哪一行代码会触发编译错误?是以“&”结尾的行吗? '''?看起来像是一个引号问题...注意它在那个点上如何影响语法着色 – HansUp

+0

现在有两个特定的错误:1. I否则,如果错误是预期的:列表分隔符或) - >这一个在语句结尾突出显示“'”。 2.在其他情况下,如果错误是预期的:表达式 - >这一个突出显示“*”中的撇号 – user4403907

回答

1

正如@HansUp提到的那样,您使用了非标准引号和非标准撇号。用正确的替换它们。 第二个问题是有这样的说法:“”“ VBA编译器把它看作‘’”(空字符串和未闭合的引号)。您需要使用内部报价双引号要解决它:“”“””

最后你的程序应该是这样的:

Private Sub UTIL_FCLTY_ID_Change() 
    If Nz(Me.UTIL_FCLTY_ID.Text) = "" Then 
     Me.Form.Filter = "" 
     Me.FilterOn = False 
     Exit Sub 'there's nothing to proceed ;) 
    End If 

    If Me.UTIL_FCLTY_ID.ListIndex <> -1 Then 
     Me.Form.Filter = "[UTILITY FACILITY TYPE NAME:] = '" & _ 
       Replace(Me.UTIL_FCLTY_ID.Text, "'", """") & "'" 
     Me.FilterOn = True 
    Else 
     Me.Form.Filter = "[UTILITY FACILITY TYPE NAME:] Like '*" & _ 
       Replace(Me.UTIL_FCLTY_ID.Text, "'", """") & "*'" 
     Me.FilterOn = True 
    End If 

    Me.UTIL_FCLTY_ID.SetFocus 
    Me.UTIL_FCLTY_ID.SelStart = Len(Me.UTIL_FCLTY_ID.Text) 

End Sub 
相关问题