Excel VBA – Range.Find 方法

Loading

測試環境 Windows 10 + Excel 2016

透過Range.Find 方法搜尋資料 , 參考文章 – https://learn.microsoft.com/zh-tw/office/vba/api/excel.range.find

語法:

expression.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

expression 代表 Range 物件的變數。

範例 1

在指定範例中尋找含有值為 2 的儲存格並全部變更為 5.

Sub FindValue()
    
    Dim c As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:D1") 
        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

說明:

  • With Worksheets(1).Range(“A1:D1”)
    這邊使用到 With 語句,可以讓我們指定一個 物件或 (或是使用者定義的類型) ,後面就不需要重複指定 , 詳細請參考 https://learn.microsoft.com/zh-tw/office/vba/language/concepts/getting-started/using-with-statements
  • .Find(2, lookin:=xlValues)
    find 的參數

    • 2 要找的值的內容
    • lookin:=xlValues 指定要找值
  • .FindNext(c)
    使用 FindNext 方法來重複進行搜尋(也可使用 FindPrevious 往前找).

執行結果:

範例 2

在指定範例中尋找含有值為 abc 的儲存格並全部變更為 xyz.

Sub FindString()

    Dim c As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:D1")
        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

執行結果:

沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料