• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロを教えてください。(初心者です))

エクセルのマクロで行を追加する方法

このQ&Aのポイント
  • エクセルで子どものお小遣い帳を作る際に、マクロを使用して行を追加する方法を教えてください。
  • 残高欄の計算には、一つ上の行の残高に入金欄から出金欄を引いた値を使用します。
  • マクロを実行すると、10行ずつ行が追加されます。追加される行には計算式が含まれています。

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

  • ベストアンサー
  • argument
  • ベストアンサー率63% (21/33)
回答No.3

はじめまして himinana さん 関数の内容は見てませんが貴方の今回の問題は解決できるかと思います。つまりVBAでの操作にです。 貴方のマクロに追加したのはわずか4行です。 以下を回答をして提示します。 Sub Macro1() endline = Range("G65536").End(xlUp).Row stline = endline + 1 edline = stline + 10 Range("G1").Select Selection.Copy 'Range("G5:G14").Select Range("G" & stline & ":G" & edline).Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1").Select End Sub どうでしょうか?実行してみましたか? 予想通り動いたと思います。 ですが今回はそれだけでなく全ての処理の内容も説明しましょう。 endline = Range("G65536").End(xlUp).Row これはGセルにデータのある最終行を求めます。 stline = endline + 1 コピー位置の開始を決めます。最終行+1です。 edline = stline + 10 コピー位置の終端を決めます。10行ずつとの事なので+10 Range("G1").Select セルのG1を選択します Selection.Copy 現在選択しているセルをコピーします 'Range("G5:G14").Select コメントアウトしてますがこれが前回の処理ですね これはG5からG14セルを選択しますと言う意味です。 つまりここが5と14と書かれている以上ここにしか上書きしません Range("G" & stline & ":G" & edline).Select そこでさっきのスタートとエンドラインを追加します。 これは最終行が毎回変動するたびに可変するため貴方のお望みの結果が生まれるわけです。元のG5がG可変の値ST 元のG14がG可変の値EDとなるわけです ActiveSheet.Paste さてこれは貼り付けです。現在選択されているセルに値を貼り付けます 選択する範囲が変わったことで貼り付けられる位置ももちろん可変して貼り付けられます。 Application.CutCopyMode = False これはコピー状態の解除です Range("A1").Select 最後にA1セルに戻って(選択して)います。正直はこれは別にいらない処理ですがまぁ残しておいてもまったく問題ありません。 どうですか?これで自動登録されたマクロの内容も目で追えるようになりましたね? もしも解らないこと・補足・処理違いがあれば言ってください。

himinana
質問者

お礼

本当に助かりました。 まさにやりたかったことができました。 ありがとうございます。 (+10のところは+9で対応いたしました) http://oshiete1.goo.ne.jp/qa4335365.html こちらもお知恵を拝借させて頂けますと幸甚です。

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

想像するところ「マクロの自動記録」を利用されていると思いますが、多分、その時に5行目からにペーストすることを記録されたのだと思います。 ですので、そのままのマクロを再実行すれば、忠実に同じこと(=5行目からのペースト)を実行します。 質問者さんが、目的とするマクロを完成させるためには、上記のマクロのペースト開始行を、『その時のシートの最下行+1』(=式が入っていない最初の行)となるように修正してあげる必要があるとそ想像されます。 さらに想像すると、『>これをコピーさせることができました』とありますのが、コピー元の設定によっては、数字などが記入されている行をコピーするようになっていると、新しく作成されたはずの行に数字が書き込まれた状態になってしまうことも起り得ます。 もしかすると、そのあたりも修正しておく必要があるかも知れません。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>たとえば、1行目に計算式だけを入れた行を用意しておいて、 >マクロを実行して5行目から14行目に >これをコピーさせることができました。 まずこのコードを提示されては? そして修正の必要な箇所を見比べた方が今後のためにもなるかと思います。

himinana
質問者

補足

コードはこちらです。よろしくお願い致します。 Sub Macro1() ' ' Macro1 Macro ' ' Range("G1").Select Selection.Copy Range("G5:G14").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1").Select End Sub

関連するQ&A