检测代码不工作
我有一段使用端口代码来识别交易区域的代码。 在大多数情况下,它工作正常,但其中一个例外是不正确的识别。
实质上,当交易是EU-NA
,目的地在加勒比(在Range("RegionNACar")
中以斜杠分隔的列表)时,它应该select" to NA EC"
作为后缀( sSufTo
)。 唯一的例外是,如果源端口是"ESSDR"
,在这种情况下,它应该恢复到" to NA GL"
的默认后缀(之前成功识别)。
使用的主要function是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
上设置了一个监视Range("RegionNACar").Value
在该子本身中的Range("RegionNACar").Value
和在该函数内的sKeywords
中的值; 当它从手表中获取正确的数据时, sKeywords
最终从Range("RegionSAEC")
获取数据,并存储在其上方的单元格中。 我已经检查了范围名称和参考,他们都是正确的。
任何人都可以发现什么是错的? 我必须俯视一些东西,但我不能为了我的生活找出什么 …
那么,它不能解释发生了什么问题,或给我一个很好的优雅的单线解决scheme,但我现在已经使用了这个解决方法:
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
这不是干净的,但它的工作原理。 (就目前而言,据我所知)