• ベストアンサー

エクセルVBAセルの選択、挿入でズレた時に自動修正

エクセルのVBAで、セルA1を選択します Sub Macro1() Range("A1").Select End Sub 別の作業でA列に1行挿入すると 自動的にセルB1を選択してくれないと困るのですが、どうすれば良いのですか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

方法1:基本 セレクトしたいA1セルに、例えばシルシとして「ここ」と記入しておく sub macro1() cells.find("ここ").select end sub のようにシルシを探してそこを選ぶ 実際のシルシはあなたの実物のエクセルに応じて適切に自分で工夫する。 方法2:応用 セレクトしたいA1セルに、名前の定義で「ここ」という名前を定義しておく sub macro2() range("ここ").select end sub のように、そこを名指しで選択すればいつでもどこに行ってても選んでくれる。

48946
質問者

お礼

そんなやり方があったんですね 有難う御座います

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.2

No1の補足です。 行挿入ですから自動でB1選択じゃなくてA2選択ですよね。そのつもりで回答してます。 あと、たぶん以下のような処理でいけるような話ではないと思いますが、一応限定した環境の話ならということで。 Selectしたセルの上にしか挿入しないのであれば、たとえば10行目は使わないし10行目以降にはデータがないという状態でしたら10行目に何かしらのデータを記載しておいて絶対に消さないようにしておき(たとえば「消さない」とか書いておく) 下記のようなコードにしておけば(最初はA1を選択している例です) y = Range("A" & Rows.Count).End(xlUp).Row - 9 Range("A" & y).Select 1行挿入してもコードは修正せずにA2が選択されるようになります。

  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.1

エクセルのVBAでは、手動で列や行の挿入をした場合、セル番地を自動で補正してくれる機能はありませんので、手作業で書き換えるしかありません。VBAで挿入をする場合でも、その部分に適したセル番地を変更するコードを記載しておくしかありません。 たとえば y = 1 x = 1 Cells(y, x).Select としておいて、挿入のコードを書いた後で(上に1行挿入なら) y=y+1 Cells(y, x).Select などのようにしておくとかです。

関連するQ&A

専門家に質問してみよう