2013-06-05 95 views
0

我正在寻找比较VBA中两个字符串变量的方法。我使用的是当前语句(没有产生预期的结果)是:在VBA中比较变量

  • If Variable1 = Variable2 Then...

我有一个VBA宏,在我的代码的第一部分分配给两个变量:

  • Dim Variable1 as String Variable1 = Left(Range("$F$3").Value, 4)
  • Dim Variable2 as String Variable2 = ("SheetName.B15")

我已经使用下面的语句试过了,但它仍然不能正常工作:

  • If Variable1 Like Variable2 Then...

此前,该语句用字符串比较的第一个变量的工作,但它要求我硬编码了“ABC”字符串。它看起来像下面的语句:

  • If Variable1 = "ABC" Then...

是否有人知道一个语句的语法来两个字符串变量比较,还是可以推荐的方法为他们在一个子比较,并返回一个二进制结果,我可以再比较一下?

谢谢!


在Windows 8上运行VBA为Excel 2013

+3

如果你'Debug.Print'每个变量的值你看到了什么? –

+0

@ Tim-Williams 伟大的建议,'Debug.Print'显示我错误地分配了Variable2。变量2作为'“SheetName.B15”'返回。 使用该信息,我将自己的变量赋值更正为: Dim Variable2 As String Variable2 = Worksheets(“SheetName”)。Cells(15,“B”)。价值' 感谢推! –

+0

[像这样](http://www.databison.com/index.php/string-comparison-function-in-vba/) – 2013-06-06 07:27:02

回答

0

这里是解决方案:

我没有正确地分配变量2,因此,该功能没有产生期望的结果。感谢大家对他们的贡献,通过回复的 - 这里就是我们想出来的:

要在现有的分两个字符串变量相比,使用:

If Variable1 = Variable 2 Then... 

要在它自己比较两个字符串变量sub,使用:

Sub compare() 
    MsgBox StrComp("Stack", "stack") 'alerts -1 
End Sub 

Sub compare() 
    MsgBox StrComp("Stack", "stack", 1) 'Compare as text while ignoring case 
End Sub 
2

您可以使用StrComp

Sub compare() 
     MsgBox StrComp("Stack", "stack") 'alerts -1 
    End Sub 

Sub compare() 
    MsgBox StrComp("Stack", "stack", 1) 'Compare as text while ignoring case 
End Sub 

第一个是大小写敏感的,其中第二个是没有,当然你也可以更换硬编码值与变量

+0

谢谢你提供这个。这是一个比较字符串变量的好方法。 另外,我能够实现这一点,而不必通过使用'If Variable1 = Variable2 Then'来编写新的子代码...我在测试阶段没有正确地分配Variable2。 –