ExcelVBA 目次 - ray88’s diary
■Function
Function fncGetCellAddress(sheet As Worksheet, searchRangeRow As Variant, searchValue As String, matchType As String) As Variant '------------------------------------------------------------- ' 機能:指定した文字列でワークシートを検索し、合致した値の入っているセルアドレスを返す ' ' 引数1:検索対象のワークシートオブジェクト ' 引数2:検索対象行の行番号(全シートの場合は「全範囲」)と入れる ' 引数3:検索対象の文言' ' 引数4:完全一致か部分一致か指定する("完全一致" または "部分一致") ' ' 戻り値:検索結果のセルアドレスの行番号と列番号を配列で返す '------------------------------------------------------------- Dim searchRange As Range If searchRangeRow = "全範囲" Then Set searchRange = sheet.Cells Else Set searchRange = sheet.Rows(searchRangeRow) End If Dim foundCell As Range Select Case matchType Case "完全一致" Set foundCell = searchRange.Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole) Case "部分一致" Set foundCell = searchRange.Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlPart) End Select If foundCell Is Nothing Then fncGetCellAddress = Null Else fncGetCellAddress = Array(foundCell.Row, foundCell.Column) End If End Function
■Functionの呼び出し例
Sub test3() Dim Aファイル As String Dim wb_A As Workbook Dim masterSheet As Worksheet Dim searchResult() As Variant Aファイル = "C:\テスト\Aファイル.xlsx" Set wb_A = Workbooks.Open(Aファイル) Set masterSheet = wb_A.Sheets("マスタ") searchResult = fncGetCellAddress(masterSheet, "全範囲", "冷蔵庫TOSHIBA", "完全一致") MsgBox "検索結果: 行" & searchResult(0) & ", 列" & searchResult(1) End Sub
■実行結果