• ベストアンサー

常に特定の行の上に新規行挿入するマクロ

   A , B 1: 1月,1000円 2: 2月,2000円 3: 計,SUM(B1:B2) 4: 月,  円 という表があります。 4行目を常に計行(上記の場合は3行目、仮に3月分まで入力している場合は4行目になる)の上に挿入し、合計は挿入行分も含まれる、というマクロは可能でしょうか? ご存知の方おられましたらご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.4

こうかな? Sub aaa()   Dim ws As Worksheet   Dim rge As Range   Dim r As Long         Set ws = ActiveSheet      Set rge = ws.Range("A:A").Find("計") 'A列で検索   If rge Is Nothing Then Exit Sub '見つからない場合は中断   r = rge.Row '見つかったら行番号を取得   '計というセルに挿入   ws.Range("A" & r & ":B" & r).Insert xlDown   'コピーする   ws.Range("A" & (r + 2) & ":B" & (r + 2)).Copy   '値だけ貼り付け   ws.Range("A" & r & ":B" & r).PasteSpecial xlPasteValues   '合計欄の更新も忘れずに   ws.Range("B" & (r + 1)).Formula = "=sum(B1:B" & r & ")" End Sub

No1No2
質問者

お礼

自力ではc列に補助的に関数使ってようやく完成できた・・・と思ってたのですが、 phoenix343さんの構文で完璧です!感動しました! 本当にありがとうございます。

その他の回答 (3)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

質問内容に矛盾点が >4行目を常に計行の上に挿入 質問文の例にこの動作を行うと合計行が4行目になりますよね、次にマクロを実施すると4行目の合計行の上に合計行を挿入する形になってしまいます。    A , B 1: 1月,1000円 2: 2月,2000円 3: 3月,3000円 4: 計,SUM(B1:B2)SUMの引数がどう変化するかは不明ですが 5: 計,SUM(B1:B2) こんな形になりますが、これが目的ですか?

No1No2
質問者

補足

説明不足ですいません。 初期の状態では4行目ですが、マクロを行うごとに1行ずつ下がりますので1回行うと5行目、2回行うと6行目をコピーして挿入、といった形になります。ですので1回行った場合の表示が    A , B 1: 1月,1000円 2: 2月,2000円 3: 3月,3000円 4: 計,SUM(B1:B3) 5: 月,円 で、次は5行目を4行目の上に挿入して    A , B 1: 1月,1000円 2: 2月,2000円 3: 3月,3000円 4: 4月,4000円 5: 計,SUM(B1:B4) 6: 月,円 という形にしたいのです。

  • soixante
  • ベストアンサー率32% (401/1245)
回答No.2

Sub aaa() Dim i As Integer, j As Integer Dim kei As Long i = Cells(Rows.Count, 1).End(xlUp).Row Rows(i - 1).Insert Rows(i + 1).Cut Rows(i - 1) For j = 1 To i - 1 kei = kei + Cells(j, 2).Value Next j Cells(i, 2).Value = kei Cells(i + 1, 1).Select End Sub ご質問の意図に合ってますでしょうか。

No1No2
質問者

お礼

6行目をcutでなくcopyにすると期待していたものに近くなりました! マクロは記録しかしたことがなくてVBA(?)はさわった事なかったんですが勉強になりました。まだ内容そのものは理解しきれてないんですが、解読してみます。 ありがとうございました。

No1No2
質問者

補足

あと、マクロ実行後、計行の合計値がsum関数でなく、数値になってしまうのですが、これはsum関数で残しておくのは無理なんでしょうか?

  • orangezzzz
  • ベストアンサー率35% (401/1119)
回答No.1

おはようございます。 無理ですよ。マクロ(VBA)といっても万能ではありません。 ぜひ勉強して試してみてください。無理なことがわかります。 合計行の上を空けておけば、行挿入するだけで合計に含まれますから、ぜひそうしてください。

No1No2
質問者

お礼

PCの苦手な上司達にマクロボタンで簡単に、と思ったもので・・・ でもどうにかなるものですね、マクロ・・・奥が深いです。

関連するQ&A