• ベストアンサー

「アプリケーション定義またはオブジェクト定義のエラー」の解決

sheet1からsheet2に転記するにあたっての質問です。 sheet1の数値を使ってuとzを計算し、それをsheet2に出力したいのですが 「アプリケーション定義またはオブジェクト定義のエラーです」 というエラーが出てしまいます。現在のコードは以下になります。 どのように直せば良いのか教えて下さい。 Worksheets("Sheet2").Cells(n, j + 1).Value = u Worksheets("Sheet2").Cells(n + 1, j + 1).Value = z

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

No.1です。 後はuとzが怪しい事になりますが、とりあえず、 >Worksheets("Sheet2").Cells(n, j + 1).Value = u を On Error Resume Next Worksheets("Sheet2").Cells(n, j + 1).Value = u If Err.Number <> 0 Then DoEvents End If On Error GoTo 0 としてDoEventsの所にブレークポイントを入れて、ここに来た時(エラーが発生した時)の、n、j + 1、Worksheets("Sheet2").Cells(n, j + 1).Value、uの値を順に調べてみてください。 どれかがエラーになっているはずです。 また >Worksheets("Sheet2").Cells(n + 1, j + 1).Value = z も同様に調べてみてください。

aoiro12
質問者

お礼

hotosysさん 回答ありがとうございます。 調べてみたところ u=0 z=0 となっていましたが、sheet2には 4098.34864786929や -5235.01068699772など、 計算された数値(正しい数値でした)が入力されていました。 エラー表示されるのに正しい数値が出力される場合、放置しておいてもいいのでしょうか? 何度も申し訳ありませんが、ご回答宜しくお願い致します。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

>「アプリケーション定義またはオブジェクト定義のエラーです」 >現在のコードは以下になります >Worksheets("Sheet2").Cells(n, j + 1).Value = u >Worksheets("Sheet2").Cells(n + 1, j + 1).Value = z 当然ながらコードはこの2行だけではないですよね。(^^;;; n,n+1,j+1の値が0以下またはシート最大行超でないなら エラーはここではなく別のところにあるはずです。 それは、 >計算された数値(正しい数値でした)が入力されていました この文言からも推察できます。 で、以下のことをしてください。 このエラーダイアログに「デバッグ」ボタンがあると思いますが それをクリックするとエラーコードの箇所に色が付きますので その部分に変数があったらその上にマウス持っていくと、 その変数の値が表示されますのでそれが正しい値か確認してください。 また、そのコードを提示してください。 >エラー表示されるのに正しい数値が出力される場合、放置しておいてもいいのでしょうか? いくらなんでもこれは拙いでしょう。(^^;;;; 以上。  

aoiro12
質問者

お礼

ご回答ありがとうございます。 変数の値を調べてみたところ、 excelに出力する際に、列番号が256のときにエラーになっていることがわかりました。 ですので、行と列を逆にして出力したら解決しました。 ありがとうございました!

すると、全ての回答が全文表示されます。
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.1

セルの指定で行または列が0またはマイナスになると質問のエラーになります。 つまり Worksheets("Sheet2").Cells(n, j + 1).Value = u のnまたはj+1が0またはマイナスになっている場合、この行が質問のエラーになるので、1以上になるようにする。 Worksheets("Sheet2").Cells(n + 1, j + 1).Value = z のn+1またはj+1が0またはマイナスになっている場合、この行が質問のエラーになるので、1以上になるようにする。

aoiro12
質問者

お礼

早急な回答ありがとうございます。 しかし、ステップインで確認してみましたところどちらの最低値も n=4 j=1 のように、1以上の自然数でした。 他に考えられる原因があれば回答をお願い致します。 何度も申し訳ありません。

すると、全ての回答が全文表示されます。

関連するQ&A