• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel vba のエラー原因が分かりません)

Excel VBAのエラー原因が分かりません

このQ&Aのポイント
  • データ入力シート「Hit Data」とデータ表示シート「User Sheet」に「次へ」「前へ」「最初へ」「最後へ」とボタンをつくり、データ入力シートからデータを呼び出せるようにするプログラムを作成しましたが、エラーが出てしまいます。
  • プログラム中に問題があるかどうか確認するために、エラーメッセージが表示される部分を詳しく調べると、以下のエラーが出ています。
  • ・saisyo:アプリケーション定義またはオブジェクト定義のエラーです。 ・saigo:同上 ・mae:オブジェクト変数またはWithブロック変数が設定されていません ・tsugi:同上

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

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.4

puyopaさん こんにちは。 > 一度私のファイルを確認していただくことは可能でしょうか? 確認しました。 コードは間違っていないようです。 「Hit Data」シートがなぜか壊れていると思われいます。 ※Worksheets("Hit Data")がエラーを起こしている。 対策としては、 1.「Hit Data」シートをコピーして、別シートを作成する。 2.コピー元のシート「Hit Data」を削除する。 3.コピー後のシート名を「Hit Data」にする。 これで直るかと思います。 エラーを探し出すことが、VBAの技術アップになると思います。 それには、ステップ実行やイミディエート・ウィンドウ等を使ってデバッグの経験を 積むことだと思います。 puyopaさん、色々大変ですが頑張って勉強してください。

puyopa
質問者

お礼

jcctaira様のおっしゃる通りにすれば、見事にうまくいきました。 シートが壊れるだなんて、そんな事が起こりえるんですね!? 普通に新規シートを作成して作ったファイルなんですが、なぜ壊れるのかが自分でもよくわかりません。 本当にありがとうございます。 ベストアンサーを選ぶのは難しいのですが、最終的に原因を見つけてくださった jcctaira様 とさせていただきます。 皆様、本当にありがとうございました。

その他の回答 (3)

回答No.3

こんにちは エラーのでる状況はどういう状況の時にでますか? こちらで試したところ、最初または、最後を一回押した後、前、次を押すと問題なく 動作しました。 エラーは、最初または、最後を押さずに前、または次を押すと  『オブジェクト変数またはWithブロック変数が設定されていません』 がでましたが、  『アプリケーション定義またはオブジェクト定義のエラーです。』 はでませんでした。 理由としては、最初または最後で、Set trg = ・・・を行っているので、この動作を 行わずに、前、または次の動作を行うといきなり、何も格納されていないtrgとの比較 にはいるので、エラーになると思われます。 また、ステップで検証しているときに、途中で■で中断して、前、次の処理を行っても エラーになります。 エクセル起動直後には、最初または最後の処理をしていないので、前、次のボタンを 押すとエラーになります。 一度エラーがでるともう一度、trgにセットする必要がありますので、最初または最後 のようななんらかのtrgにセットする処理が必要になります。 シートがアクティブになった場合に最初の処理をしていますが、起動時に自動的にやる ように、ThisWorkbookモジュールの中に Sub Workbook_Open() Call Saisyo End Sub を入れてしまいましょう。 これをしておけば、最初の処理がマクロ有効時に自動的に 行われます。 もし、エラーがでるようでしたら、状況もあわせて補足してください。 それでは

puyopa
質問者

お礼

いつも回答ありがとうございます。 >エラーのでる状況はどういう状況の時にでますか? 何れのプロシージャでもマクロの実行しようとすると、エラーが発生します。 「最初へ」「最後へ」のコマンド実行時のエラーは、やはり『アプリケーション定義またはオブジェクト定義のエラーです。』で 実行時エラー’32809':と表示されています。 アドバイス頂いたとおりに ThisWorkbookモジュールの中に Sub Workbook_Open() Call Saisyo End Sub を入れてみた所、起動時に『最初』プロシージャで 『アプリケーション定義またはオブジェクト定義のエラーです」』が表示されました。実行時エラー'57121':です。 一度、パソコンの何らかの設定の問題でしょうか。今度違うパソコンで挑戦してみようかなと思います。

puyopa
質問者

補足

私のファイルを下記アプロダに上げさせていただきました。 すみません、まことに申し上げにくいのですが、差し支えなければで結構なのですが、 一度私のファイルを確認していただくことは可能でしょうか? ウィルスソフトでしているパソコンなので、ファイル自体問題はないはずです。 NO4505(※パス等はありません。) http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.2

puyopaさん 問題はないと思いますよ。 > オブジェクト変数またはWithブロック変数が設定されていません これが起きる原因は「trg」に設定されていない時になります。 サンプルコードではきちんと設定しているので起きないはずです。 ※シート名の名前が間違っているかもと思いましたが、それだと違うエラーメッセージになります。 提示したコードが全てでなければ「trg」をどこかでクリアーしたり、他に原因あるのだと思われます。 できればステップ実行でどこでエラーになっているのか「trg」にきちんと設定しているのか等を確認してください。

puyopa
質問者

お礼

回答ありがとうございます。 私もtrgが認識されていないのかなって思っています。 なぜ私だけがうまくいかないのか、不可解です。 宣言の仕方を変えてみようかなと思います。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

2010版ですが何の問題もなく実行されます。 (データが転記されますし、エラーも起こりません。データがなければメッセージも出ます。) 版によって動作できないようなコードでもなさそうです。 間違ったところにコードを書いているのではないかと思いますがわかりません。

puyopa
質問者

お礼

回答ありがとうございます。 私はWINDOWS2000ですが、どうしてもうまくいきません。 これ以外にコードは書いておりませんが、どうしてもエラーが出てしまいます。 うーん。悩ましいです。

関連するQ&A