我有一段代码使用端口代码来识别交易区域。在大多数情况下,它工作正常,但其中一个例外是没有正确识别。
实质上,当交易为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
获取数据,并存储在其上方的单元格中。我检查了范围名称和参考文献,它们都是正确的。
有人能发现什么是错的吗?我必须忽略一些东西,但我不能为我的生活弄清楚是什么 ......
答案 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
它不是那么干净,但它有效。 (据我所知,现在。)