VBA StrComp |使用StrComp函数比较VBA中的字符串

Excel VBA StrComp函数

VBA StrComp 是一个内置函数,用于比较两个字符串值是否相同。但是,结果不像工作表中那样默认为TRUE或FALSE,而是不同。

在查看结果之前,让我先向您展示StrComp函数的语法。

  • 字串1: 字符串1是我们要比较的第一个字符串或值。
  • 字串2: 字符串2是我们要比较的第二个字符串或值 弦1.
  • 比较: 我们可以在此处提供三个选项。
      • 0 =二进制比较。这将执行区分大小写的计算。例如,“ Hello”不等于“ HELLO”,因为两个单词的大小写都不同。如果忽略此参数,则为默认值。 vbBinaryCompare
      • 1 =文字比较。此选项执行不区分大小写的计算。例如,“ Hello”等于“ HELLO”事件,尽管两个词的大小写都不同。 vbTextCompare
      • 2 =访问比较。这将执行数据库比较。

字符串比较(StrComp)函数的结果

正如我告诉我们的那样,当我们在工作表中比较两个值时,得出的结果为TRUE或FALSE。但是用VBA字符串比较函数的结果是不一样的。

  • 我们得到零(0)时 弦1 等于 字符串2。
  • 我们得到一(1) 弦1 值大于 弦2 价值.
  • 当我们得到负一(-1) 弦1 值小于 弦2
  • 我们在以下情况下得到NULL 弦1 或者 弦2 值为NULL。

使用VBA StrComp函数的示例

您可以在此处下载此VBA StrComp Excel模板– VBA StrComp Excel模板

范例#1

让我们从一个简单的例子开始。例如,我们将比较两个值,即“ Excel VBA”和“ Excel VBA”。

代码:

 Sub StrComp_Example1()Dim FirstValue作为字符串'将字符串1值存储为Dim SecondValue作为字符串'将字符串2值存储为Dim结果作为字符串'将StrComp公式的结果存储为FirstValue =“ Excel VBA”'将字符串1的值分配为SecondValue = “ Excel VBA”'分配字符串2值Result = StrComp(FirstValue,SecondValue,vbBinaryCompare)'应用StrComp函数MsgBox结果'在消息框中显示结果End Sub 

当我运行此代码时,我们将得到零 (0) 结果是因为 弦1 弦2 值是相同的。

范例#2

现在,我将更改两个单词的大小写。

字串1 = Excel Vba

字串2 = Excel VBA

代码:

 Sub StrComp_Example2()Dim FirstValue作为字符串'存储字符串1值Dim SecondValue作为字符串'存储字符串2值Dim结果作为字符串'存储StrComp公式的结果FirstValue =“ Excel Vba”'分配字符串1值SecondValue = “ Excel VBA”'分配字符串2值Result = StrComp(FirstValue,SecondValue,vbBinaryCompare)'应用StrComp函数MsgBox结果'在消息框中显示结果End Sub 

当我运行这段代码时,我们将得到 1 因为自从我们将Compare参数提供为“vbBinaryCompare” 它将检查区分大小写的字符。

现在,我将更改 比较 来自“vbBinaryCompare” 到 ”vbTextCompare”

代码:

 Sub StrComp_Example3()Dim FirstValue作为字符串'存储字符串1值Dim SecondValue作为字符串'存储字符串2值Dim结果作为字符串'存储StrComp公式的结果FirstValue =“ Excel Vba”'分配字符串1值SecondValue = “ Excel VBA”'分配字符串2值Result = StrComp(FirstValue,SecondValue,vbTextCompare)'应用StrComp函数MsgBox结果'在消息框中显示结果End Sub 

有了这个 比较, 我们将得到零 (0) 因为 vbaTextCompare 忽略区分大小写的单词。

例子#3

IF条件下VBA StrComp的案例研究

假设您具有如下图所示的数据。

我们需要比较 弦1 弦2 到达 结果 如果两者相同,则为“精确”,否则结果应为“不精确”。

下面的代码将为我们完成这项工作。

代码:

 Sub StrComp_Example4()Dim结果作为字符串Dim I作为整数,i = 2到6结果= StrComp(Cells(i,1).Value,Cells(i,2).Value)如果Result = 0则Cells(i,3 ).Value =“精确”的其他单元格(i,3).Value =“不精确的”如果下一个i结束,则结束 

当我在Excel中运行上述VBA代码时,我们将得到以下结果。

如果你看C4细胞 弦1 弦2 相同,但字符区分大小写,因此结果为“不精确”。为了克服这个问题,我们需要提供“比较为” vbTextCompare。

下面是修改后的代码,可将C4单元格的结果显示为“精确”。

代码:

 Sub StrComp_Example4()Dim结果作为字符串Dim I作为整数,i = 2到6结果= StrComp(Cells(i,1).Value,Cells(i,2).Value,vbTextCompare)如果结果= 0,则Cells(i ,3).Value =“精确”的其他单元格(i,3).Value =“不精确的”如果下一个i结束,则结束 

此代码将返回以下结果。