Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 检测代码不工作_Excel_Vba - Fatal编程技术网

Excel 检测代码不工作

Excel 检测代码不工作,excel,vba,Excel,Vba,我有一段代码,它使用港口代码来识别贸易地区。在大多数情况下,它工作正常,但其中一个例外是没有正确识别 本质上,当贸易为EU-NA且目的地位于加勒比海(位于范围(“RegionNACar”)的斜线分隔列表中)时,应选择“to NA EC”作为后缀(sSufTo)。唯一的例外情况是,如果源端口是“ESSDR”,则在这种情况下,它应恢复为默认后缀“to NA GL”(该后缀在前面成功识别) 正在使用的主要功能是包含_关键字,该功能在模块的其余部分中广泛使用,通常工作正常: Function Conta

我有一段代码,它使用港口代码来识别贸易地区。在大多数情况下,它工作正常,但其中一个例外是没有正确识别

本质上,当贸易为
EU-NA
且目的地位于加勒比海(位于
范围(“RegionNACar”)
的斜线分隔列表中)时,应选择
“to NA EC”
作为后缀(
sSufTo
)。唯一的例外情况是,如果源端口是
“ESSDR”
,则在这种情况下,它应恢复为默认后缀
“to NA GL”
(该后缀在前面成功识别)

正在使用的主要功能是
包含_关键字
,该功能在模块的其余部分中广泛使用,通常工作正常:

Function Contains_Keyword(sDescr As String, sKeywords As String) As Boolean
    Dim A() As String, bIsIn As Boolean, i As Integer
    A = Split(sKeywords, "/")
    bIsIn = False
For i = LBound(A) To UBound(A)
    If InStr(1, sDescr, A(i)) Then
        bIsIn = True
        Exit For
    Else
        End If
Next i
Contains_Keyword = bIsIn
End Function
这是由这行调用的(通常不使用
.Value
,但我添加了它以查看是否有帮助):

我在sub本身的
Range(“RegionNACar”).Value和函数的
sKeywords
上都设置了手表;当它在手表中获取正确的数据时,
sKeywords
最终从存储在其上方单元格中的
Range(“RegionSAEC”)
中获取数据。我检查了范围名称和引用,它们都是正确的


有人能看出哪里不对劲吗?我一定忽略了什么,但我一辈子都搞不清楚什么…

好吧,它不能解释出什么地方出了问题,也不能给我一个很好的简单解决方案,但我现在已经使用了这个解决方法:

If sTrade = "EU-NA" And Contains_Keyword(UCase(sTo), Range("RegionNACar").Value) Then sSufTo = " to NA EC"
If UCase(sPOL) = "ESSDR" Then
    If Contains_Keyword(UCase(sTo), Range("RegionNACar")) Then sSufTo = " to NA GL"
End If

虽然没有那么干净,但它很管用。(据我所知,目前为止。)

好吧,这并不能解释出什么地方出了问题,也不能给我一个很好的优雅的单线解决方案,但我现在已经使用了这个解决方法:

If sTrade = "EU-NA" And Contains_Keyword(UCase(sTo), Range("RegionNACar").Value) Then sSufTo = " to NA EC"
If UCase(sPOL) = "ESSDR" Then
    If Contains_Keyword(UCase(sTo), Range("RegionNACar")) Then sSufTo = " to NA GL"
End If
虽然没有那么干净,但它很管用。(就我目前所知。)