- ベストアンサー
Excelワークシート関数をVBAで使用する方法
- Excelでワークシート関数をVBAで使用したいと思っていますが、上手くいきません。実行時エラーが発生してしまいます。
- VBA上で「ISERROR(FIND(V$10,R$11))=FALSE」といった式を使いたいと考えていますが、エラーが出てしまいます。
- 入れ子の問題かもしれませんが、うまく解決できません。どうすれば正常にワークシート関数を使うことができるでしょうか?
- みんなの回答 (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 のようなはんていをします。
その他の回答 (1)
- kkkkkm
- ベストアンサー率66% (1719/2589)
InStr関数利用すればいかがですか If InStr(Cells(i, 18), Cells(i, j)) > 0 Then Cells(i, j).Select End If
お礼
ありがとうございました。できました。
お礼
詳しい解説ありがとうございます。 理解できました。