2015-12-08 3 views
2

У меня возникла проблема со сравнением двух строк. Метод, похоже, не работает. Я попытался следующие к функциям:VBA сравните строку (проверьте, содержит ли строка 1 строку)

  1. Метод:

    If StrComp(logic_string, RSTA_ISIN_clean) Then 
        rng.Offset(0, 16) = "OK(ISIN in RSTA)" 
        rng.Offset(0, 16).Interior.Color = 5296274 
    Else 
        rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)" 
        rng.Offset(0, 16).Interior.Color = 255 
    End If 
    
  2. Метод:

    If InStr(1, RSTA_ISIN_clean, logic_string, vbTextCompare) Then 
        rng.Offset(0, 16) = "OK(ISIN in RSTA)" 
        rng.Offset(0, 16).Interior.Color = 5296274 
    Else 
        rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)" 
        rng.Offset(0, 16).Interior.Color = 255 
    End If 
    

в logic_string У меня есть значение "FR0012915700" и в RSTA_ISIN я имеют значение = «Старый ISIN: FR0012915700»

Все, что я пытаюсь сделать, это проверить, находится ли RSTA_ISIN в logic_string, и если это так, я хочу написать OK в ячейке. (пытается получить метод contains здесь)

Может быть, что-то не так с логикой, поскольку оно иногда дает мне пробелы -> так логика_строка выглядит так в режиме отладки «FR0004052561» -> Я попытался обрезать пробелы с помощью Обрезать, но это тоже не работает.

Я также пробовал функцию InStr, но это не работает, либо

Может кто-то помочь пожалуйста

Это то, что я получаю в режиме отладки:

enter image description here

+0

При попытке коды в моей системе я получаю матч с функцией TRIM и также выглядит работать. Можете ли вы сообщить, как устанавливаются значения RSTA_ISIN_clean и logic_String? – izzymo

+0

Код отлично подходит для меня тоже – newjenn

+0

Привет, извините за замешательство, я хочу проверить, находится ли RSTA_ISIN в logic_string или другими словами, содержит ли logic_string RSTA_ISIN – Nant

ответ

1

Пожалуйста, проверьте вашей переменной. «RSTA_ISIN_clean» или «RSTA_ISIN» в качестве переменной

Sub test1() 

Dim RSTA_ISIN_clean As String 
Dim logic_string As String 
Dim Rng As Range 


Set Rng = ActiveSheet.Cells(1, 30) 

logic_string = "FR0012915700" 

RSTA_ISIN_clean = "Old ISIN: FR0012915700" 

logic_string = Trim(logic_string) 
RSTA_ISIN_clean = Trim(RSTA_ISIN_clean) 


If StrComp(logic_string, RSTA_ISIN_clean) Then 
    Rng.Offset(0, 16) = "OK(ISIN in RSTA)" 
    Rng.Offset(0, 16).Interior.Color = 5296274 
Else 
    Rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)" 
    Rng.Offset(0, 16).Interior.Color = 255 
End If 



End Sub 
1

Это не кажется мне, что вы на самом деле хотите использовать StrCmp function на всех; это звучит так, как если бы ваш find-string-in-another-string должен обрабатываться InStr function. Пожалуйста, нажмите эти ссылки и прочитайте документацию MSDN, чтобы принять решение.

Dim logic_string as String, RSTA_ISIN_clean as String 

logic_string = "FR0012915700" 
RSTA_ISIN_clean = " Old ISIN: FR0012915700" 

If CBool(InStr(1, RSTA_ISIN_clean, logic_string, vbTextCompare)) Then 
    rng.Offset(0, 16) = "OK(ISIN in RSTA)" 
    rng.Offset(0, 16).Interior.Color = 5296274 
Else 
    rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)" 
    rng.Offset(0, 16).Interior.Color = 255 
End If 
1

Попробуйте использовать Как Оператор:

Dim logic_string As String, RSTA_ISIN_clean As String 

    logic_string = " FR0012915700" 
    RSTA_ISIN_clean = " Old ISIN: FR0012915700" 


If RSTA_ISIN_clean Like "*" & Trim(logic_string) & "*" Then 
    Rng.Offset(0, 16) = "OK(ISIN in RSTA)" 
    Rng.Offset(0, 16).Interior.Color = 5296274 
Else 
    Rng.Offset(0, 16) = "NG(ISIN not RSTA or check RSTA)" 
    Rng.Offset(0, 16).Interior.Color = 255 
End If`