2016-07-28 53 views
2

我写一个代码中有我需要找出一个字符串“总”或“总计” 我想这个代码使用查找功能的

Set lRow = ws.Range(nRow & ":" & aRow).Find(what:="total" OR "totals", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False) 

我也试过这个

Set lRow = ws.Range(nRow & ":" & aRow).Find(what:="total" OR what:="totals", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False) 

是否有可能像这样使用FIND功能。如果不是,请引导我找出这两个字符串中的一个。

+1

如果你没有比'total'或'totals'例如'全面回忆以外的任何'那你可以用wildca RD。 'what:=“total *”' –

+1

@SiddharthRout从现在开始,我用于总和的每个变量都将被命名为'TotalRecall' – RGA

回答

4

不,你不能这样搜索。解决方法,但是,很容易

Set lRow = ws.Range(nRow & ":" & aRow).Find(what:="total", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False) 
If lRow Is Nothing then 
    Set lRow = ws.Range(nRow & ":" & aRow).Find(what:="totals", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False) 
End If 

注意,这个过程可以扩展到尽可能多的条件,你想检查,假设他们是独家

+0

是啊...很好很容易... –

+0

优秀,感谢很多,告诉我关于这条路。我将在我的编码中使用这种方法。 但是在这里,我想清楚地怀疑,如果我使用Siddharth先生建议的“total *”,会发现“totalD”还是其他任何后缀为“total”的东西? – Nafis

+0

如果在函数中指定的表单或范围中存在多个“总计”,会得到什么结果? – Nafis

2

因为“总”是一个子-string“总计”的,我们可以搜索“总”使用xlPart找到任何字:

Sub ytrewq() 
    Dim ws As Worksheet, lRow As Range 

    Set ws = ActiveSheet 
    Set lRow = ws.Range("A:A").Find(what:="total", after:=Range("A1"), lookat:=xlPart) 
    MsgBox lRow.Address(0, 0) 
End Sub 
+1

虽然这是真的,但如果OP有类似“小计”的东西,他们不想找到 – RGA

+0

@RGA,那么这是行不通的! –