检测代码不起作用

时间:2016-03-31 11:13:25

标签: excel excel-vba vba

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

实质上,当交易为EU-NA且目的地位于加勒比海地区(保存在Range("RegionNACar")中的斜线分隔列表中)时,应选择" to NA EC"作为后缀({ {1}})。唯一的例外是如果原始端口是sSufTo,在这种情况下,它应该恢复为"ESSDR"的默认后缀(之前已成功识别)。

使用的主要功能是" to NA GL",它在模块的其余部分中广泛使用,通常可以正常工作:

Contains_Keyword

此行由此行调用(主要在没有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

我在子本身的If sTrade = "EU-NA" And Contains_Keyword(UCase(sPODCo), Range("RegionNACar").Value) _ And Not (UCase(sPOL) = "ESSDR") Then sSufTo = " to NA EC" 和函数内的Range("RegionNACar").Value设置了一个手表;当它在手表中获取正确的数据时,sKeywords最终从sKeywords获取数据,并存储在其上方的单元格中。我检查了范围名称和参考文献,它们都是正确的。

有人能发现什么是错的吗?我必须忽略一些东西,但我不能为我的生活弄清楚是什么 ......

1 个答案:

答案 0 :(得分:0)

嗯,它没有解释出现了什么问题或者给了我一个优雅的单行解决方案,但我现在已经使用了这个解决方法:

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

它不是那么干净,但它有效。 (据我所知,现在。)