Range.Find 方法 (Excel)
會尋找範圍中的特定資訊。
注意事項
對於開發跨多個平台,擴充使用者 Office 體驗的解決方案感到興趣嗎? 請參閱新的 Office 增益集模型。 與 VSTO 增益集和解決方案相比,Office 增益集的佔用空間較小,而且您可以使用幾乎任何網頁程式技術 (例如 HTML5、JavaScript、CSS3 和 XML) 來建立這些增益集。
語法
expression.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
expression 代表 Range 物件的變數。
參數
名稱 | 必要/選用 | 資料類型 | 描述 |
---|---|---|---|
What | 必要 | Variant | 要搜尋的資料。 可以為字串或任何 Microsoft Excel 資料類型。 |
After | 選用 | Variant | 要在其後開始搜尋的儲存格。 這個儲存格對應於從使用者介面執行搜尋時的作用中儲存格位置。 請注意,After 必須是搜尋範圍中的單一儲存格。 請記住搜尋是在這個儲存格之後開始;直到該方法循環回到指定的儲存格時,才會搜尋該儲存格。 如果您未指定這個引數,則搜尋會在範圍左上角的儲存格之後開始。 |
LookIn | 選用 | Variant | 可以是下列其中一個 XlFindLookIn 常數︰xlFormulas、xlValues、xlComments 或 xlCommentsThreaded。 |
LookAt | 選用 | Variant | 可以為下列其中一個 xlLookAt 常數:xlWhole 或 xlPart。 |
SearchOrder | 選用 | Variant | 可以為下列其中一個 XlSearchOrder 常數:xlByRows 或 xlByColumns。 |
SearchDirection | 選用 | Variant | 可以是下列其中之一種 XlSearchDirection 常數:xlNext 或 xlPrevious。 |
MatchCase | 選用 | Variant | True 表示搜尋會區分大小寫。 預設值為 False。 |
MatchByte | 選用 | Variant | 只有當您已選取或安裝雙位元組語言支援時,才能使用。 若為 True,則雙位元組字元只能符合雙位元組字元。 若為 False,則雙位元組字元可符合其對等的單位元組字元。 |
SearchFormat | 選用 | Variant | 搜尋格式。 |
傳回值
Range 物件,代表找到該項資訊的第一個儲存格。
註解
如果沒有找到符合的儲存格,則此方法會傳回 Nothing。 Find 方法不會影響選取範圍或作用中儲存格。
每次您使用此方法時,都會儲存 LookIn、LookAt、SearchOrder 和 MatchByte 的設定。 如果下次呼叫此方法時未指定這些引數的值,便會使用儲存的值。 設定這些引數會變更 [尋找] 對話方塊中的設定,而變更 [尋找] 對話方塊中的設定則會變更您省略引數時使用的儲存值。 若要避免發生問題,每次使用此方法時,請明確設定這些引數。
使用 FindNext 及 FindPrevious 方法以重複進行搜尋。
當搜尋到達所指定搜尋範圍的結尾時,它會折回至範圍的開始。 若要在發生折回時停止搜尋,請儲存第一個找到之儲存格的地址,然後測試每個後續找到的儲存格位址是否與這個儲存的地址相等。
若要尋找符合更複雜圖樣的儲存格,請使用 For Each...Next 陳述式及 Like 運算子。 例如,下列程式碼會在 A1:C5 範圍內搜尋字型名稱以 Cour 開始的所有儲存格。 當 Microsoft Excel 找到符合的儲存格時,會將其字型變更為 Times New Roman。
For Each c In [A1:C5] If c.Font.Name Like "Cour*" Then c.Font.Name = "Times New Roman" End If Next`
範例
這個範例會在工作表 1 內的 A1:A500 範圍內尋找含有值為 2 的所有儲存格,並將這些儲存格的值全部變更為 5。 也就是說,值 1234 和 99299 都包含 2,而這兩個儲存格的值都會變成 5。
Sub FindValue()
Dim c As Range
Dim firstAddress As String
With Worksheets(1).Range("A1:A500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
End Sub
這個範例會在工作表 1 的 A1:A500 範圍內尋找含有 "abc" 子字串的所有儲存格,然後以 "xyz" 取代 "abc"。
Sub FindString()
Dim c As Range
Dim firstAddress As String
With Worksheets(1).Range("A1:A500")
Set c = .Find("abc", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = Replace(c.Value, "abc", "xyz")
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
End Sub
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。