• ベストアンサー

エクセルの「新しいマクロの記録」で相対的にセルを指定するには?

基本的にマクロの知識はなく、「新しいマクロの記録」で記録したものを使うことしかできないレベルです。 現在カーソルがあるところをA1のセルとします。 マクロの記録を開始して、B1を指定し、計算式等を 入力します。で、マクロの記録を終了します。 希望としては、現在A2にカーソルがある状態で マクロを実行すると、B2に同様の計算式が入力されて 欲しいのですが、そのままやってしまうと、再度B1に データが入力されてしまいます。 どこかに相対的にセルを指定できるようなオプションが あったと記憶しているのですが、探し出せません。 ご存じの方教えてください。

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

  • ベストアンサー
  • t_amano
  • ベストアンサー率42% (16/38)
回答No.1

マクロの記録を実行すると、「記録終了」ツールバーが表示されます。そのツールバーの左のボタンは「記録終了」ボタン、右のボタンが「相対参照」ボタンです。 「相対参照」ボタンをクリックしてから記録すれば、希望される処理は可能です。 ただしこの処理がどのバージョンから可能だったのか覚えていません。最新の2002ではあります。確かめてください。

yama_x
質問者

お礼

お礼が本当に遅くなってしまい申し訳ありませんでした。ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

取り急ぎ、下記が参考になればと思います。見当違いで あればお詫びします。 (1)「現在カーソルがあるところをA1のセルとします。」 Range("A1").Selectに当たるが、マクロ記録が始まっていないので記録なし。 (2)「マクロの記録を開始して」以下の操作が記録される。 (3)「B1を指定し、」 で Range("B1").Selectが記録されます。 (4)「計算式等を入力します」簡単な例として「=A1」 と入力します。 (5)「マクロの記録を終了します。」そしてツール-マクロ マクロ-マクロ名選択-編集をクリックすると、   Range("B1").Select ActiveCell.FormulaR1C1 = "=RC[-1]" Range("C1").Select と記録されています。 (6) "=RC[-1]"の意味は、「R」はRow(行)のRで[] が付いていないので、同じ行を意味します(今回はB1セル をアクチブにして、A1を指定したのですから、A1=B1 と1は同じです。「C]はColumn(列)のCで、[-1] が付いていて、中身が-1です。これはアクチブセルのB1 から見て、1列左列(この際はA列)を指していることを 示しています。 (7)言いたいことは、マクロの記録は相対的に記録されていると言うことです。 (8)Range("B1").Selectが縛りを入れていると言うことです。この行を削除し、Range("C1").SelectもMoveAfterReturnの 関係で入っているものですから、削除します。 ActiveCell.FormulaR1C1 = "=RC[-1]"だけを残します。 (9)実行して見ましょう。例えばC5セルをアクチブにして 実行すると、C5セルには「=B5」が入ります。 同じ行で、1列左列の値を入れろとなって、理屈に合うわけです。 (10)しかしこう言う機能を利用したいとお考えですか。 私は利用する人に大変気遣いを強いるような気がしますが 活用経験がないからかもしれません。似たような場合VBAではRangeのOffsetプロパティなどを使っています。 (11)しかしActiveCellの便利さは感じています。

yama_x
質問者

お礼

お礼が本当に遅くなってしまい申し訳ありませんでした。ありがとうございました。

関連するQ&A