我是VBA的新手,但我一直在编写很多C#。我的问题是我不断得到"运行时错误13.键入Mismatch"我的VBA功能出错。
我从访问中的表中提取数据,然后尝试过滤一些数据。
我的功能如下:
Function FlowType(deliveryAdrID As String, deliverType As String, note As String) As String
If (note = "*J") Then
FlowType = "Weekend"
ElseIf (deliveryAdrID = "62242" & deliverType = "H") Then
FlowType = "AirGotland"
ElseIf (deliveryAdrID <> "62242" & deliverType = "H") Then
FlowType = "Air"
Else
FlowType = "Standard"
End If
End Function
为什么会出现此错误?此行发生错误:
ElseIf (deliveryAdrID = "62242" & deliverType = "H") Then
答案 0 :(得分:2)
您的问题是因为您使用的是&
,而不是And
。 &符号是连接字符串的运算符,而And
是布尔运算符。所以,改变你的比较,如下:
ElseIf ((deliveryAdrID = "62242") And (deliverType = "H")) Then
使用&
,(假设两个条件都满意),您使用的表达式将评估为
ElseIf ("TrueTrue") Then
这是没有意义的,因为&#34; TrueTrue&#34;不是布尔值。
答案 1 :(得分:1)
您将deliveryAdrID
声明为Double,但是您尝试为其分配String
:
deliveryAdrID = "62242"
这是一种类型不匹配,正如VBA试图告诉你的那样。 ;)
所以,只需使用
deliveryAdrID = 62242