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 常數︰xlFormulasxlValuesxlCommentsxlCommentsThreaded
LookAt 選用 Variant 可以為下列其中一個 xlLookAt 常數:xlWholexlPart
SearchOrder 選用 Variant 可以為下列其中一個 XlSearchOrder 常數:xlByRowsxlByColumns
SearchDirection Optional Variant 可以是下列其中之一種 XlSearchDirection 常數:xlNextxlPrevious
MatchCase 選用 Variant True 表示搜尋會區分大小寫。 預設值為 False
MatchByte 選用 Variant 只有當您已選取或安裝雙位元組語言支援時,才能使用。 若為 True,則雙位元組字元只能符合雙位元組字元。 若為 False,則雙位元組字元可符合其對等的單位元組字元。
SearchFormat 選用 Variant 搜尋格式。

傳回值

Range 物件,代表找到該項資訊的第一個儲存格。

註解

如果沒有找到符合的儲存格,則此方法會傳回 NothingFind 方法不會影響選取範圍或作用中儲存格。

每次您使用此方法時,都會儲存 LookInLookAtSearchOrderMatchByte 的設定。 如果下次呼叫此方法時未指定這些引數的值,便會使用儲存的值。 設定這些引數會變更 [尋找] 對話方塊中的設定,而變更 [尋找] 對話方塊中的設定則會變更您省略引數時使用的儲存值。 若要避免發生問題,每次使用此方法時,請明確設定這些引數。

使用 FindNextFindPrevious 方法以重複進行搜尋。

當搜尋到達所指定搜尋範圍的結尾時,它會折回至範圍的開始。 若要在發生折回時停止搜尋,請儲存第一個找到之儲存格的地址,然後測試每個後續找到的儲存格位址是否與這個儲存的地址相等。

若要尋找符合更複雜圖樣的儲存格,請使用 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 支援與意見反應