【最大10000ポイント】当たる!!質問投稿キャンペーン!

vba初心者です。

excelのvbaでセル範囲(rangeなど)を指定して数値の入力や参照をしますが
vbaを使わずに元のワークシート側で行・列の挿入、削除した場合
vbaにはその分反映されません。(当然ですが)

Range("C3:D4")の場合、B列に列を挿入したらRange("D3:E4")
となるような。

vbaの修正を最小限に抑える簡単で良い方法はありますか。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>vbaの修正を最小限に抑える簡単で良い方法はありますか。



ありません。

基本的には、変動が有る部分はVBAで範囲指定をしないこと。
若しくは、自動対応できるようなコードに変更したり、変動をチェックして自動修正するとか、実行の都度手動で範囲設定を行う事も可能です。(Application.InputBox関数 )

まずはどのような作業内容になっているのかをきちんと把握して、作業を妨げる事のない処理手順を考える事です。
    • good
    • 0

基本的には、VBAを作成する前にシートの構成は十分に考慮して、列の挿入や削除がないようにします。


どうしても運用で列が移動する場合は、
セルに名前の定義をつけておく方法は如何でしょうか
C3:D4セルを選択しておいて、挿入、名前、定義で名前をつけておく
VBAでは Range("つけた名前").Slect
とかの構文が使えると思います。
或いは、データの上行に 項目名などがあれば、そのセルの値を検索して列を指定するなどの方法も思い浮かべますが。
    • good
    • 0

n を挿入する列の数としたらRangeの書き方を次のようにしておくことで可能でしょう。



Range(Cells(3,3+n),Cells(4,4+n))

これでn=1とすれば変わりますね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング