2016-07-28 57 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,那麼這是行不通的! –