• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel ワークシート関数をVBAで使用したい)

Excelワークシート関数をVBAで使用する方法

このQ&Aのポイント
  • Excelでワークシート関数をVBAで使用したいと思っていますが、上手くいきません。実行時エラーが発生してしまいます。
  • VBA上で「ISERROR(FIND(V$10,R$11))=FALSE」といった式を使いたいと考えていますが、エラーが出てしまいます。
  • 入れ子の問題かもしれませんが、うまく解決できません。どうすれば正常にワークシート関数を使うことができるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問者はVBA熟達の人と思われないのに、FINDに ・2種類あること ・みつかったかどうか、の判定の仕方を、 解説書やWEBで勉強して質問していますか? 安易に自分の気の向くままに他類似と思ったケースとのるいす類推などで、コードを書いていないか。この能力・態度も大切だが、役立たない場合も相当多い。 ーー エクセル関数のFIND関数は文字列の中でどの位置にあるかを探す関数です。 むしろ、BasicのINSTR関数と似ている.だからあまり使われないかもと思う。 エクセルの関数のFINDでは A1セルの値が「大阪市北区芝田町」の時、=FIND("芝田",A1)  は6 を返します。 VBAで Sub test01() x = Application.WorksheetFunction.Find("芝田町", Range("A1")) MsgBox x End Sub でも 6 を返します。 ーー 一方エクセルVBAのFindメソッドは セルB1:B5に(すなわちセル群のどのセルにあるかを見る、ので前記とは違う) 柴田町 芝田町 稲荷町 門前 東田上 の時 Sub test02() x = Range("B1:B5").Find("芝田町").Row MsgBox x End Sub は(2)行目のセルを指します。 基本的な機能が違います。 ーー 下記のベストアンサーをよく読んでください http://okwave.jp/qa/q8008851.html ーー エラーの対処は (1)Find関数 Sub test031() x = Application.WorksheetFunction.Find("芝田町", Range("A2")) MsgBox x End Sub でエラーが起こる場合は Sub test03() On Error GoTo err1 x = Application.WorksheetFunction.Find("芝田町", Range("A2")) MsgBox x err1: MsgBox "FIND関数で検索語が見つかりません" Exit Sub End Sub 状況上、回復続行はむつかしいと思うが、どう処理するかは場合による。 (2)Findメソッド 例は http://excel-ubara.com/excelvba1/EXCELVBA398.html Set rngFind = Range("A1:B100").Find(What:="A", _               LookIn:=xlValues, _               LookAt:=xlPart, _               SearchOrder:=xlByColumns, _               SearchDirection:=xlNext, _               MatchCase:=False, _               MatchByte:=False) If Not rngFind Is Nothing Then   MsgBox "見つかった" & vbLf & rngFind.Address Else MsgBox "見つかりません" & vbLf & ”次の検索語を検索します。」 End If のようなはんていをします。

mihimarumaru
質問者

お礼

詳しい解説ありがとうございます。 理解できました。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

InStr関数利用すればいかがですか If InStr(Cells(i, 18), Cells(i, j)) > 0 Then Cells(i, j).Select End If

mihimarumaru
質問者

お礼

ありがとうございました。できました。

関連するQ&A