• ベストアンサー

マクロで式を記入するとき、相対参照がおかしくなってしまうのを直すには?

office2000のExcelのVBAについてです。 たびたびすみません。相対参照のエラーについて教えてください。 下記のVBAの記述のように、相対参照の式をある範囲のセルに変数%の幅に応じて入力するプログラムを作成したいと考えております。 変数% = 8 With Worksheets(sheetname$) .Range("T126:AI155").ClearContents .Range(.Cells(126, 20), .Cells(155, 19 + 2 * ッ変数%)).FormulaR1C1 = _ "=(RC[-18]-R[-1]C[-18])/0.04*100" End With このマクロを単体で動作させると、式が正しく参照されてセルに式が入ります  (例):=(B126-B125)/0.04*100 ところが、上位マクロから、上記を呼び出して実施すると、参照位置がおかしくなってしまう現象が発生します。  (例):=(IE1-IE65536)/0.04*100 原因がわからなく、困っております。なにか、確認したほうがよいアドバイスなどございましたら、少しでも教えてください。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

どうも。 相対式ですから、セルの座標に影響されます。 これが呼ばれる時に、ActiveCellが「A1」なのでしょう。 Sub Test()  Range("A1") = "=(RC[-18]-R[-1]C[-18])/0.04*100" End Sub これを実行してみてください。 A1の-1行は65536行、A列の-18列はIE列である事が解かります。

lemon567
質問者

お礼

セルがアクティブにならずに、グラフが選択されていました。それで、相対位置がおかしくなってしまっていたんですね。 よく知らないでVBAを使うと、おかしいことがたくさんおこってしまうんですね。 #1の方が言われているように、セルをアクティブにするようにしたら、値が正常になりました。 これも、かなり悩んでいたのですが、解決いたしました。 たびたび、アドバイス本当にありがとうございました。

その他の回答 (1)

  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.1

IE1->IE65536ということはIE列の1行目と最終行を 参照してしまっているわけですね。 "=(RC[-18]-R[-1]C[-18])/0.04*100" と変数を使わずに書かれているので、どうして そういう事象が起こるのかわかりませんが、 一応、以下を試されてはどうでしょうか? 1) 当該コードの直前に、セルをアクティブにするコードを入れてみる。 2) msgbox関数を入れて、関係しそうな変数を 表示させてみる。

lemon567
質問者

お礼

ありがとうございます。 1)を実行しましたら、解決いたしました!