我在比较两个字符串时遇到问题。该方法似乎无法以某种方式工作。我尝试了以下功能:
方法:
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
方法:
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有问题,因为它有时给我空格 - >所以logic_string在调试模式下看起来像这样#34; FR0004052561" - >我试图用Trim修剪空间,但这也不起作用。
我也尝试过InStr功能,但这不起作用
有人可以协助吗
这是我在调试模式下得到的:
答案 0 :(得分: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 :(得分:1)
对我来说,你实际上根本不想使用StrCmp function,这听起来并不合适;听起来好像你的 find-string-within-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
答案 2 :(得分:1)
尝试使用Like Operator:
double