2016-03-31 2 views
1

У меня есть код, который использует коды портов для определения региона торговли. По большей части он работает нормально, но одно из исключений не идентифицируется должным образом.Код обнаружения не работает

В сущности, когда торговля EU-NA и назначения в Карибском море (провел в слэш-разделителями в списке в Range("RegionNACar")) он должен выбрать " to NA EC" как суффикс (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 заканчивает извлечение данных из Range("RegionSAEC"), хранящихся в ячейке над ним. Я проверил имена диапазонов и ссылки, и все они верны.

Может ли кто-нибудь определить, что случилось? Я, должно быть, что-то не замечаю, но не могу, чтобы жизнь меня определяла что ...

ответ

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 

Это не так чисто, но оно работает. (Насколько я могу судить, на данный момент.)

Смежные вопросы