私は、結果を探しているすべてのセルをポーリングするよりもずっと速いので、 "Find"関数に基づいて結果を操作するためにUDFにVBAを使用しようとしています。UDFでVBAコードを検索するときにFindPreviousを使用できますか?
エラーを再現するための基本に戻ってきましたが、この部分には「オブジェクト変数またはブロック変数が設定されていません」エラーが表示されますSearchRange.FindPrevious.Address
(行を停止してエラーを取得する、デバッグモードの外でエラーを返さずにUDFを終了する)
次のようなキッカーがあります:このようなシートでUDFを使用しようとするとエラーが発生します:=testfind("3206-1",E:E)
ただし、ウィンドウのようにVBEのように:?testfind("3206-1",Range("E:E"))
私は$E$15295
の正しい結果がエラーなしで取得します。
コードは次のとおりです。
Function TestFind(FindString As String, SearchRange As Range)
Dim ActiveAddress As Range
Set ActiveAddress = SearchRange.Find(FindString)
TestFind = SearchRange.FindPrevious.Address
End Function
はL42の変化に修正し、今では動作します:
Function TestFind(FindString As String, SearchRange As Range)
Dim ActiveAddress As Range
Set ActiveAddress = SearchRange.Find(FindString)
TestFind = SearchRange.Find(FindString, , , , , xlPrevious).Address
End Function
...あなたはおそらく 'Eを配置する必要がされていますか?イミディエイトウインドウのクエリがどのように '' E:E "'を持っているかに注目してください。 – BruceWayne
@ダンこの機能は大丈夫です。このエラーは、 'FindString'が範囲内に見つからない場合にのみ発生します。したがって、 'Error Handler'を使用してください。 'Sub'から' Function'を呼び出してください。 – harun24hr
ありがとうございますが、それは範囲を予期しており、デバッグウィンドウは二重引用符を使用しているため、VBAで範囲が指定されている方法です。 –