Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:如何比较特定字符串_Vba_Excel - Fatal编程技术网

Excel VBA:如何比较特定字符串

Excel VBA:如何比较特定字符串,vba,excel,Vba,Excel,我遇到了一些问题,我不知道如何比较字符串 范例 Dim DateStart as String Dim CompareDate as String DateStart = "01-05-15" 在CompareDatei中键入值02-05-15,如何比较01-05和02-05 我不想使用Dim DateStart作为日期 以及如何比较列而不是行? 我用于比较行的当前代码是: iRow = ws.Cells.Find(what:="*", After:=ws.Range("a1"), Searc

我遇到了一些问题,我不知道如何比较字符串

范例

Dim DateStart as String
Dim CompareDate as String
DateStart = "01-05-15"
CompareDate
i中键入值02-05-15,如何比较01-05和02-05

我不想使用Dim DateStart作为日期

以及如何比较列而不是行? 我用于比较行的当前代码是:

iRow = ws.Cells.Find(what:="*", After:=ws.Range("a1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
如果不使用“Dim DateStart as Date”,则在比较时可以使用“CDate(DateStart)”

如果需要特定格式,可以使用(例如):

如何比较01-05和02-05

由于您正在进行
字符串匹配,请尝试以下操作

Sub Sample()
    Dim DateStart As String
    Dim CompareDate As String

    CompareDate = "02-05-15"
    DateStart = "01-05-15"

    If Left(DateStart, (InStrRev(DateStart, "-", -1, vbTextCompare) - 1)) = _
       Left(CompareDate, (InStrRev(CompareDate, "-", -1, vbTextCompare) - 1)) Then
        MsgBox "Matches"
    Else
        MsgBox "Doesn't Match"
    End If
End Sub
InStrRev
函数返回一个字符串在另一个字符串中第一次出现的位置(
-
),从该字符串的
结尾开始

或者你可以使用这个简单的代码

If Left(DateStart, 5) = Left(CompareDate, 5) Then
    MsgBox "Matches"
Else
    MsgBox "Doesn't Match"
End If
关于你的第二个问题,我很抱歉,我不明白你想要实现什么。也许你可以换个说法


编辑:您的意思是希望使用此
搜索顺序:=xlByColumns
而不是
搜索顺序:=xlByRows

问题是当我以“dd-mm-yy”格式键入时,CDATE()将其存储到“yy-mm-dd”,因此每次我的日期都将变为年,年份变为日期…>。您可以使用Format获得所需的输出。你需要什么格式?呃~事实上我已经找到了一种方法,但还没有尝试编码,那就是将字符串转换为数组并进行比较~代码可能有点长,有点乱,但我认为应该可以工作:D~非常感谢:DThanks非常感谢:)我想你已经回答了我的第二个问题,但我找到了另一种方法:D~但你已经找到了让我知道一个更好的方法:D~
If Left(DateStart, 5) = Left(CompareDate, 5) Then
    MsgBox "Matches"
Else
    MsgBox "Doesn't Match"
End If