VBAによる行追加時の
VBAで行を追加するのは問題がないのですが、行を挿入するとき、挿入行の数式を含め追加すると、
絶対参照、複合参照にしている数式の一部が相対参照のように変わってしまいます。
また、挿入行以降の数式も全て変わってしまいます。
色々調べてみましたが、原因が分かりません。
G列1O行目以降に以下の数式
G10セル =IF(OR(E10<>"",F10<>""),$G$9+SUM($E$10:$E10)-SUM($F$10:$F10),"")
G11セル =IF(OR(E11<>"",F11<>""),$G$9+SUM($E$10:$E11)-SUM($F$10:$F11),"")
G12セル =IF(OR(E12<>"",F12<>""),$G$9+SUM($E$10:$E12)-SUM($F$10:$F12),"")
同じ数式で100行程度あります。
絶対参照以外は各行アドレスになります。
例えば、G10に行挿入すると、上記のG10はG11(以降も全て)にずれますますので、
G10セル =IF(OR(E10<>"",F10<>""),$G$9+SUM($E10:$E$10)-SUM($F10:$F$10),"")
G11セル =IF(OR(E11<>"",F11<>""),$G$9+SUM($E$10:$E11)-SUM($F$10:$F11),"")
G12セル =IF(OR(E12<>"",F12<>""),$G$9+SUM($E$10:$E12)-SUM($F$10:$F12),"")
となると考えていますが、
実際は、
G10セル =IF(OR(E10<>"",F10<>""),$G$9+SUM($E10:$E$11)-SUM($F10:$F$11),"")
G11セル =IF(OR(E11<>"",F11<>""),$G$9+SUM($E$11:$E11)-SUM($F$11:$F11),"")
G12セル =IF(OR(E12<>"",F12<>""),$G$9+SUM($E$12:$E12)-SUM($F$12:$F12),"")
と、SUM関数の絶対参照、複合参照の部分が相対参照と同じようにアドレスが変わってしまいます。
VBAでのコピーは行列範囲を指定してコピー、行列範囲の先頭を指定して貼付しています。
(行追加、コピー、貼付部分のみ抜粋)
'事前にコピーや切取りの操作を取り消す
Application.CutCopyMode = False
'選択された行の必要範囲を選択
Range(Cells(選択行, 選択開始列), Cells(選択行, 選択終了列)).Select
'選択された範囲をコピー
Selection.Copy
'選択行の選択開始先頭を選択
Range(Cells(選択行, 選択開始先頭).Address).Select
'貼付(行挿入での貼付)
Selection.Insert Shift:=xlDown
'コピーを取り消す
Application.CutCopyMode = False
なぜこのような挙動になるのか、また対策方法はあるのでしょうか?
なお、シートの上下の関係で、選択されている行を基準にコピー貼付を行う必要があるため、
最初の行、途中、最終行に関係なく正しく行追加する方法がありましたらお教え下さい
よろしくお願いします。
Win XP(SP3)
Excel2003,Excel2007
(基本、Excel2003で使用する予定です)
お礼
ご回答ありがとうございます。 納得いたしました。