在 VBA 中比较字符串
Iqra Hasnain
2022年7月18日
我们将介绍如何在 VBA 中使用不同的方法比较字符串。
比较 VBA 中的字符串
在使用 excel 工作表时,在某些情况下,我们必须比较字符串并希望得到哪个字符串小于或大于另一个字符串的结果。VBA 为此提供了一个完美的方法,称为 StrComp()
,它比较两个字符串以获得数值结果。
如果我们比较的两个字符串相等,则此方法将返回 0
。如果第一个字符串小于另一个字符串,我们将获得 -1
作为返回值。
如果第一个输入字符串大于另一个字符串,我们将得到值 1
作为结果。如果用户输入字符串之一是 empty
,则返回值将是 Null
。
StrComp()
方法使用了三种比较方法,但只有两种最常用,我们将讨论这两种方法。如果我们想比较两个字符串的二进制,我们可以使用 vbBinaryCompare
,这个方法是区分大小写的。
如果我们想比较两个字符串的文本,我们可以使用 vbTextCompare
,一种不区分大小写的方法。让我们举个例子,比较两个字符串。
代码:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World"
compare = StrComp(stringOne, stringTwo)
MsgBox compare
End Sub
输出:
在上面的示例中,我们传递了与我们得到的相同的字符串 0
作为返回值。让我们传递不同的值并检查我们得到的返回值。
代码:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World!"
compare = StrComp(stringOne, stringTwo)
MsgBox compare
End Sub
输出:
从上面的代码中,我们将不同的字符串传递给我们得到 -1
的长度作为返回值,因为第二个字符串大于第一个。让我们尝试 StrComp()
中的字符串比较方法,并检查如果我们使用相同的字符串但大小写不同并使用 vbTextCompare
方法,结果有何不同。
代码:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello WorLd"
compare = StrComp(stringOne, stringTwo, vbTextCompare)
MsgBox compare
End Sub
输出:
现在,我们在示例中通过添加一个额外的空格来使用 vbBinaryCompare
方法。
代码:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World"
compare = StrComp(stringOne, stringTwo, vbBinaryCompare)
MsgBox compare
End Sub
输出:
这样,我们可以使用 StrComp()
方法和内置方法(例如 vbTextCompare
和 vbBinaryCompare
)根据长度或文本比较两个字符串。