Excel(エクセル)VBAのFindメソッドの戻り値についてご紹介!

Excel(エクセル)の勉強方法のメイン画像 Excel(エクセル)

業務中に調べることの多い、Excel,Word,PowerPointなどのノウハウを発信していきます!

Biz Magic編集部をフォローする

Excel(エクセル)Findメソッドとは

皆さんExcel VBAのFindメソッドとはなにかをご存じでしょうか?FindメソッドとはVBAで検索や置換などの機能を提供するメソッドです。このメソッドを使用することで、指定した文字列を含むセルや範囲を検索し、該当するセルや範囲を返すことができます。

Findメソッドの戻り値はRangeオブジェクトかNothingです。Rangeオブジェクトとは、Excelワークシートのセルや範囲を表すオブジェクトであり、Findメソッドが検索対象の文字列を見つけた場合に、その文字列が含まれるセルの範囲を返します。Findメソッドは、戻り値としてRangeオブジェクトを返すため、そのオブジェクトに対して様々な操作を行うことができます。Rangeオブジェクトには、例えば以下のようなプロパティがあります。

  • Value: セルの値を取得したり設定したりすることができる
  • Address: セルのアドレスを取得することができる
  • Row: セルが属する行番号を取得することができる
  • Column: セルが属する列番号を取得することができる

これらのプロパティを使用することで、Findメソッドで見つかったセルの値や位置を取得することができます。ただし、Findメソッドが見つからなかった場合には、戻り値としてNothingが返されます。今回の記事ではFindメソッドの戻り値を実際のコードを使用してご紹介していきます。

Excel(エクセル)VBAのFindメソッドの戻り値

では、早速ですがExcel VBAのFindメソッドの戻り値をご紹介していきます。VBAのFindメソッドを使用して検索できた場合にはそのセルの値、セルのアドレス、セルの行番号、列番号を戻り値として受け取ることができます。

しかし、検索ができなかった場合にはFindメソッドが見つからなかった場合には、戻り値としてNothingが返されます。この場合は、戻り値がNothingであることを判定する必要があります。例えば、以下のようなコードで判定することができます。

Dim searchRange As Range
Set searchRange = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")

Dim searchValue As String
searchValue = "apple"

Dim resultCell As Range
Set resultCell = searchRange.Find(searchValue)

If resultCell Is Nothing Then
    MsgBox "Not found"
Else
    MsgBox "セルのアドレス:" & resultCell.Address
End If

上記のコードでは、”Sheet1″シートのA1からA10までの範囲を検索対象にし、”apple”という文字列を検索しています。Findメソッドで見つかった場合には、そのセルのアドレスをメッセージボックスで表示します。見つからなかった場合には、「Not found」というメッセージを表示します。

Findメソッドの戻り値であるRangeオブジェクトを利用することで、Excel VBAで検索結果を扱うことができます。ただし、戻り値がNothingである場合には、それを適切に処理する必要があります。また、Rangeオブジェクトは、見つかった文字列が複数ある場合には、最初に見つかったセルの範囲を返します。複数の文字列を検索してすべての結果を取得したい場合には、Findメソッドを繰り返し呼び出す必要があります。

例えば、以下のようなコードで、複数の結果を取得することができます。

Dim searchRange As Range
Set searchRange = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")

Dim searchValue As String
searchValue = "apple"

Dim resultCell As Range
Set resultCell = searchRange.Find(searchValue)

While Not resultCell Is Nothing
    MsgBox "セルのアドレス:" & resultCell.Address
    Set resultCell = searchRange.FindNext(resultCell)
    
    If resultCell.Address = firstResultAddress Then
        Exit While
    End If
Wend

上記のコードでは、Findメソッドで最初の結果を取得し、その後にFindNextメソッドを使用して、次の結果を繰り返し取得しています。最初に見つかったセルのアドレスを記憶しておき、そのアドレスと一致した場合には、繰り返し処理を終了します。

以上のように、Excel VBAのFindメソッドは、指定した範囲内から特定の文字列を検索するために使用されます。Findメソッドは、戻り値としてRangeオブジェクトを返すため、そのオブジェクトに対して様々な操作を行うことができます。戻り値がNothingである場合には、適切に処理する必要があります。また、複数の結果を取得する場合には、Findメソッドを繰り返し呼び出すことができます。このようなFindメソッドの戻り値の型や値を理解しておくことがVBAのコードを書いていく際にとても重要になります。今回の記事でご紹介した内容を覚えておくためにも実際にFindメソッドを使用したVBAコードを書いてみてください。

Excelの操作方法は実際に手を動かし、身につけていきましょう

今の時代、様々な仕事でExcelを使用することがあるでしょう。今回はExcel VBAのFindメソッドの戻り値についてご紹介しました。このような機能を使いこなすことができれば仕事にも役に立つので、実際に手を動かし、覚えていきましょう。

WordやExcelなどのOfficeツールでは便利なショートカットキーなどがたくさんあるのでよく使う作業に関してはショートカットキーを調べてみるのも効率よく仕事を進める上で大切なことなのでこれから実践してみましょう。

コメント

タイトルとURLをコピーしました