• ベストアンサー

マクロって行や列を削除したら関数みたいに相対的にずれないんですか?

いちいちVBを開いてコードを見直さなくちゃいけないんですか? 気付かなくてマクロを実行したらぐちゃぐちゃになってしまいました。 なにか直す方法はありますか? 例えばc1に「あ」と入力するマクロを使用していて B列を削除した場合、C1がB1に移動します。 その時、自動的にBVAコードもC1→B1と変化しないのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>その時、自動的にBVAコードもC1→B1と変化しないのでしょうか? 不可能です。 プログラムは指示された通りに動作する物です。 ある程度の柔軟性が欲しいなら、シートの変更に対応できるようなプログラムを組む必要がありますし、そのためにはシートの仕様もきちんと決めて置く必要があります。

noname#150498
質問者

お礼

難しいですね。 大変参考になりました。ご回答ありがとうございます。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 一般論として、解決しようとしても、その手立てはないと思うのです。それは仕様の問題であり、Excelのみならず表計算独特の癖のようなものです。だから、表計算マクロは、覚えにくくやりにくいと思うなら、私も同感します。私は、いつも掲示板で、もし、早くマクロを覚えたいなら、ワークシートは使わないことだと言っているぐらいです。 しかし、この問題を解決する場合は、「不可能・可能」という判定をするよりも、個々の問題を解決するというようにしないと解決しないと、私は思います。 具体的に言うと、コードを見せてください、ということです。 もしも、相対的な処理というのを考えたら、ますますややこしくなってしまうのです。 そして、教えられたコードをみて、そういう定番のテクニックを覚えるしかないのだと思います。習うより慣れろということかもしれませんが。

noname#150498
質問者

お礼

慣れが大事ですね。 大変参考になりました。ご回答ありがとうございます。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.3

マクロというかプログラムは書かれた通りにしか動きません。 B列を削除しろと書いてあったらB列を削除します。そこに何がはいっていようがおかまいありません。B列を削除しろと書いてあるにもかかわらず勝手にこれはA列のことだなと判断してA列を削除されてしまうほうが困ります。 ご希望のことをしたいなら、どこかに目印をつけてその目印のある列を削除しろという風に書く必要があります。 目印はセルに名前を定義しても良いですし、ユニークな値を1行目にいれておいても良いですし、やり方は色々あります。 1行目にタイトルCと書いてある列を探してきてそれが何列目かを取得し、その列の2個右の列を削除するとか。 今の時点から直す方法はないでしょう。始めてコードを実行するときはあらかじめバックアップをとってから行うような癖をつけておくというぐらいです。

noname#150498
質問者

お礼

確かにそうですね。 常に バックアップすることにします。大変参考になりました。ご回答ありがとうございます。

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.2

セルに名前付けて、名前でセルを指定しておけば良いのでは?

noname#150498
質問者

お礼

そんな方法もあるんですか! 大変参考になりました。ご回答ありがとうございます。

関連するQ&A