- 締切済み
excelのセル参照
vba初心者です。 excelのvbaでセル範囲(rangeなど)を指定して数値の入力や参照をしますが vbaを使わずに元のワークシート側で行・列の挿入、削除した場合 vbaにはその分反映されません。(当然ですが) Range("C3:D4")の場合、B列に列を挿入したらRange("D3:E4") となるような。 vbaの修正を最小限に抑える簡単で良い方法はありますか。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hana-hana3
- ベストアンサー率31% (4940/15541)
回答No.3
>vbaの修正を最小限に抑える簡単で良い方法はありますか。 ありません。 基本的には、変動が有る部分はVBAで範囲指定をしないこと。 若しくは、自動対応できるようなコードに変更したり、変動をチェックして自動修正するとか、実行の都度手動で範囲設定を行う事も可能です。(Application.InputBox関数 ) まずはどのような作業内容になっているのかをきちんと把握して、作業を妨げる事のない処理手順を考える事です。
- hallo-2007
- ベストアンサー率41% (888/2115)
回答No.2
基本的には、VBAを作成する前にシートの構成は十分に考慮して、列の挿入や削除がないようにします。 どうしても運用で列が移動する場合は、 セルに名前の定義をつけておく方法は如何でしょうか C3:D4セルを選択しておいて、挿入、名前、定義で名前をつけておく VBAでは Range("つけた名前").Slect とかの構文が使えると思います。 或いは、データの上行に 項目名などがあれば、そのセルの値を検索して列を指定するなどの方法も思い浮かべますが。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No.1
n を挿入する列の数としたらRangeの書き方を次のようにしておくことで可能でしょう。 Range(Cells(3,3+n),Cells(4,4+n)) これでn=1とすれば変わりますね。