2013-06-05 141 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。 –