Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13513 / 13644 ツリー ←次へ | 前へ→

【5032】行を追加したい tadashi 03/4/18(金) 8:59 質問
【5046】Re:行を追加したい bykin 03/4/18(金) 22:43 回答
【5057】Re:行を追加したい tadashi 03/4/19(土) 16:13 質問
【5058】Re:行を追加したい bykin 03/4/19(土) 18:14 回答
【5059】Re:行を追加したい tadashi 03/4/19(土) 20:56 お礼

【5032】行を追加したい
質問  tadashi  - 03/4/18(金) 8:59 -

引用なし
パスワード
   こんにちは、初めましてお世話になります。
1行目のA〜AN列まで見出しを、3行目に集計行を作り2行目にデータと計算式がある表で、集計行を下げながら行を追加したいので

Worksheets("シート名").Range("A65536:AN65536").End(xlUp).Offset(0).Select
Selection.EntireRow.Insert

としたところ、行は追加されるようになりましたが
そのあと2行目(又は追加行直近行)にある計算式(入力してある値は省く)、
書式を随時追加した行(A:AN列)に貼り付けながら行数の増やせるシートを作成したいのですが。

質問がわかりにくいかもしれませんが、よろしくお願いします。

【5046】Re:行を追加したい
回答  bykin  - 03/4/18(金) 22:43 -

引用なし
パスワード
   こんばんわ。

集計行の数式がちょっと気にはなるけど
一応こんな感じでどーでっしゃろか?

Sub test()
  On Error Resume Next
  With Cells(Rows.Count, 1).End(xlUp)
    If .Row > 1 Then
      With .Offset(-1, 0)
        .EntireRow.Copy
        .Offset(1, 0).EntireRow.Insert Shift:=xlDown
        .Offset(1, 0).EntireRow.SpecialCells(xlCellTypeConstants).ClearContents
      End With
    End If
  End With
  Application.CutCopyMode = False
End Sub

A列の最終行(集計行)のセルには何かデータもしくは数式が入ってるってのが条件です。

試してみてな。
ほな。

【5057】Re:行を追加したい
質問  tadashi  - 03/4/19(土) 16:13 -

引用なし
パスワード
   ▼bykin さん:
ありがとうございます。うまく追加されるようになり助かりました。
しかし、私の質問不足ですいません最終行(集計行)が、
下がるため行の集計(sum(A2:A4))がうまくいきません
SUM関数の引数を可変にする方法はありますか。

【5058】Re:行を追加したい
回答  bykin  - 03/4/19(土) 18:14 -

引用なし
パスワード
   こんにちわ。

>最終行(集計行)が、下がるため行の集計(sum(A2:A4))がうまくいきません
>SUM関数の引数を可変にする方法はありますか。

やっぱし(^^;;
せやから
>集計行の数式がちょっと気にはなるけど
って書いたんです・・・

方法としては
1.最終行の数式自体を変更する
2.ダミー行を最初から用意しておく
3.コードで数式を放り込む
のどれかやと思います。
3.についてはどんな数式が入ってるかわからんからパス(^^;;

1.最終行の数式自体を変更する

  例えば初期状態(データ行が1行しかなくて、最終行が3行目のとき)に
  セルA3の数式を
  =SUM(INDIRECT(ADDRESS(2,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))
  に変更する。
  SUM関数以外のときは、上記例を参考に変更してください。
  (全部共通のSUM関数だけなんやったら、上記数式をコピペすればOK)

2.ダミー行を最初から用意しておく

 2−1.初期状態を、項目行=1行/データ行=2行/集計行=1行の計4行にしておき
     データ行の最終行はダミー行として使用しないこととする。
     (データも数式も入れない状態で行自体を非表示にすればよい)

 2−2.集計行の数式はダミー行も含めて
     =SUM(A2:A3)
     などとしておく。

 2−3.前に提示したコードの
     If .Row > 1 Then
       With .Offset(-1, 0)
     を
     If .Row > 1 Then
       With .Offset(-2, 0)
     に変更する。

なんてのでどうかな?

試してみてな。
ほな。

【5059】Re:行を追加したい
お礼  tadashi  - 03/4/19(土) 20:56 -

引用なし
パスワード
   ▼bykin さん:
こんばんは。解決しました\(^_^)/
私のために大切な時間をさいていただきまして本当にありがとうこざいます。

13513 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free