Apple IDログイン機能メンテナンスのお知らせ

お世話になっています。いつも助けてもらってありがとうございます。今,仕事関連で使う
ものを作っています。順調にすすんでいましたが,find でエラーがでます。
findを使った自作の関数を使っていますが,一つ一つ動作を確認しながら,積み上げてます。
そんななか,ある行(この行も今まで使っていた問題の無い行)を付け加えると,次のよう
なエラーがでるようにります。

  実行時エラー’-2147417848’(80010108)
  Findメソッドは失敗しました。:’Rangeオブジェクト’

このエラーがでると,VBAの実行を中止し,通常のエクセルに戻ると,セルを選択しても
アクティブセルの表示がされなくなります。こうなると,エクセルを再起動しないとなお
りません。

ネットで調べても,このエラーは該当しませんでした。このエラーの意味を教えていただけ
るとありがたいです。よろしくお願いします。

A 回答 (4件)

こんにちは



>find でエラーがでます
FIND文を含む1行を加えただけなのでしょうか?
(それだけでは、処理はほとんど変わらないと思いますが・・)
それとも「自作の関数」を追加している?
(両者には大きな違いがあります)

いずれにしろ、何をどうなさっているのかの情報もなく「エラーが出る」ことしかわからないので、何とも手掛かりがなさすぎる状態ですが・・・

もしも本当にFINDメソッドが原因なら、通常は「該当するセルが見つからない」時にエラーが発生します。
ただし、この場合は
 実行時エラー’91’
になりますね。

一方で、ご提示の
 実行時エラー’-2147417848’(80010108)
について検索してみると、いろいろと情報が見つかります。
きっかけとなる原因はいろいろのようですが、エクセルがハングアップするという事象も共通しているようです。
これらから推測すると、どうやら内部でメモリ不足になっているのが原因のようですが(←勝手な推測です)、質問者様の実行コードの構成で同様のことが起きていたりしませんか?
ありがちなのは
 ・イベント処理等でループしてしまっていてスタックを使っている
 ・再帰処理等で、メモリを解放せずに大量のデータを積み重ねている
 ・ループなどで上記同様の処理を行っている
などをチェックしてみるのが宜しそうに思います。


※ 情報が全くないため当たるも八卦の回答になっていますので、全くの見当違いかもしれませんけれど・・・
    • good
    • 2
この回答へのお礼

早速のアドバイスありがとうございます。

Findはサブで使っています,このサブでは,検索対象が
見つからないときは,”XFD1048576”(最終行列)を
返すように,自分なりのエラー処理はしてるかと思います。

このエラーの表示の出る前の操作で,スタックス関連のエラー
等もでましたので,

・イベント処理等でループしてしまっていてスタックを使っている
 ・再帰処理等で、メモリを解放せずに大量のデータを積み重ねている

等が原因かと納得しました。知らず知らずのうちに,ループ
を作ってるのかなと思います。

もう一度精査してみたいと思います。

ありがとうございます。

お礼日時:2023/11/24 14:25

自作の関数って、もしかして、セル上の数式から呼び出してますか?


もしそうなら、諦めるしかなさそうですが・・・

https://support.microsoft.com/ja-jp/topic/excel- …
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます。

セルの数式ではありません。VBAのプロシャージャで,function
で定義してます。

お礼日時:2023/11/24 23:00

お答えしようと思いましたが、具体的な環境が書いてないので、これだけではなんとも回答ができません。


そこでchatGPTに聞いてみました。
VBAでわからないこと、どうやって組んだらいいかわからないことはchatGPTに聞くと答えてくれます(正解とは限りませんが)
以下はchatGPTの回答です。


エラーコード -2147417848 は通常、VBAの実行中にオブジェクトが予期せず破棄されたり、使用されないメモリ領域を参照しようとしたりする場合に発生します。Find メソッドに関連するエラーとなります。

エラーが発生する具体的なコードが提供されていないため、原因を特定するのは難しいですが、いくつかの一般的な原因と対処法を挙げてみます。以下の点を確認してみてください:

Find メソッドの使用: Find メソッドを使用している部分のコードを確認し、対象の Range オブジェクトが正しく設定されていることを確認してください。また、Find メソッドが何かしらの条件を満たす可能性があるか確認してください。

オブジェクトの設定と解放: オブジェクトの設定後、十分に使用し終わったら Set ステートメントを使用してオブジェクトを解放してください。オブジェクトが不要な場合は、可能な限り早く Set を使って解放しましょう。

vba
Copy code
Set myRange = Worksheets("Sheet1").Range("A1:B10")
' 何かしらの処理
Set myRange = Nothing ' オブジェクトを解放
エラーが発生する行の前後を確認: エラーが発生する行の前後に、新しく追加した行と関連する行があれば、その部分を確認してみてください。どうやらエラーが関連する行にあるようです。

デバッグツールを使用: コードの実行中にデバッグツールを使用して、どの行でエラーが発生しているのかを特定しましょう。Debug.Print ステートメントや MsgBox を挿入して変数の値を確認することができます。

vba
Copy code
Debug.Print "Here"
MsgBox "Check this point"
これらの対応策で問題が解決しない場合、追加の情報やコードの一部を提供いただければ、より具体的なサポートが可能です。
    • good
    • 1
この回答へのお礼

早速のアドバイス,並びにChatGTPの回答ありがとうございます。

VBAの実行中にオブジェクトが予期せず破棄されたり、使用されないメモリ領域を参照しようとしたりする場合に発生します。Find メソッドに関連するエラーとなります。

これあたりが,エラーになる原因かなと思います。全体を見直したり,自作のSUBを見直したりしてみたいと思います。
ありがとうございました。

お礼日時:2023/11/24 14:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A