こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

行挿入(行数は場合により様々)

エクセルVBAで売上帳を作っています。
シートを2つ使い、sheet1を入力用、sheet2を売上帳保存版として作っています。
今sheet2では、

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False 'イベント発生を一時止める
On Error GoTo line 'エラーが発生したらline:へ飛ぶ
If Not Intersect(Target, Range("売上帳最終行").Offset(-1, 0)) Is Nothing Then '入力セルが「売上帳最終行」の1行上だったら以下を作動
Range("売上帳最終行").Offset(-1, 0).EntireRow.Insert '入力セルの上に1行挿入
Range("売上帳最終行").Offset(-2, 0).Value = Range("売上帳最終行").Offset(-1, 0).Value '挿入された行に入力値を代入
Range("売上帳最終行").Offset(-1, 0).ClearContents '値が重複する最終行の1行上をクリア
r = Range("売上帳最終行").Row - 1 '売上帳最終行の1行上の行番号取得しrに代入
Range("M4").AutoFill Destination:=Range("M4:M" & r) 'M4セルから最終行の1行上までM4セルの式をAutoFill
End If
line:
Application.EnableEvents = True 'イベント発生を回復
End Sub

というコードで、下から2行目に入力されると自動的に1行増えるという表になっています。

今回入力用のsheet1に複数行入力しsheet2にコピーしようとした場合、sheet2の最終行の2行手前で納まった場合は、問題ないのですが、それをオーバーすると、表からはみだしてコピーされます。

コピーする際に、sheet1での入力行数と同じだけ、sheet2で行挿入させるにはどうすればよいですか?
長文でしかも分かりにくい質問ですみません。
不可解なところは指摘していただけたら捕捉させていただきます。
宜しくお願いします。

投稿日時 - 2008-10-29 14:37:58

QNo.4438721

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

非常に単純な方法ですが
>Range("売上帳最終行").Offset(-1, 0).EntireRow.Insert '入力セルの上に1行挿入

この行の後に、sheet2に対し
sheet("sheet2").Range("売上帳最終行").Offset(-1, 0).EntireRow.Insert '入力セルの上に1行挿入
としておけば、sheet1で挿入されたタイミングでsheet2にも挿入が行われて、
sheet2の行数が増えるため、コピーしても収まると思いますが。
(ただし、sheet2に"売上帳最終行"か、それに対応するセルが必要になります)

投稿日時 - 2008-10-29 15:22:18

お礼

回答ありがとうございます。
この方法は、sheet1でも自動で行を挿入するようにしたうえで、sheet1での入力時と同時に、sheet2で同じだけの行を挿入させるということですか?

出来れば、コピーの時点での、sheet2の自動挿入の方法が知りたいのです。
わがまま言ってすみません。
でもそういう方法もあるということは、思いつかなかったので、勉強になりました。

投稿日時 - 2008-10-29 15:33:27

あなたにオススメの質問