VBA比较string(检查string是否包含string2)

我在比较两个string时遇到问题。 该方法似乎并不工作。 我已经尝试了以下function:

  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。 (试图在这里得到一个包含方法)

可能是因为有时候会给我空格,所以logic_string出了问题 – >因此在debugging模式“FR0004052561”中,logic_string看起来像这样 – >我尝试用Trim修剪空格,但是这也不起作用。

我也尝试了InStr函数,但也不起作用

有人可以协助吗?

这是我在debugging模式下得到的:

在这里输入图像说明

请检查你的variables。 “RSTA_ISIN_clean”或“RSTA_ISIN”作为variables

 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 

我听起来并不觉得你真的想使用StrCmp函数 ; 这听起来好像你的查找string在另一个string应该由InStr函数处理。 请点击这些链接并阅读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 

尝试使用Like Operator:

 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`