ただ探すだけならFind()を使ったほうがいいけれど、複数のパターンを同一視し、2個以上あるか調べるという処理のときはループで回したほうが楽。
'見つからなかったらNothingで返す 'シート内に複数同じ項目があったらエラー。Cells(65536, 256)で返す '大文字/小文字の判別無し。LCaseで小文字可して比較してます。 Function SearchOneCell(itemarray) Set SearchOneCell = Nothing '使用されている最後の列を得る Dim usedrange_address usedrange_address = ActiveSheet.UsedRange.address Dim usedrange_row usedrange_row = Right(usedrange_address, Len(usedrange_address) - InStr(usedrange_address, ":")) usedrange_row = Split(usedrange_row, "$")(1) '使用されている最後の行を得る Dim usedrange_column usedrange_column = Right(usedrange_address, Len(usedrange_address) - InStr(usedrange_address, ":")) usedrange_column = Split(usedrange_column, "$")(2) Dim y For y = 1 To usedrange_column Dim x For x = ConvertAlphabetToNumber("A") To ConvertAlphabetToNumber(usedrange_row) Dim max_i max_i = UBound(itemarray) Dim i For i = 1 To max_i If LCase(Cells(x, y).Value) = LCase(itemarray(i)) Then If SearchOneCell Is Nothing Then Set SearchOneCell = Cells(x, y) Else '2個以上見つかった Set SearchOneCell = Cells(65536, 256) '256が列の最大値 Exit Function End If End If Next Next Next End Function