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

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

エクセルのマクロを教えてください。(初心者です)

エクセルで子どものお小遣い帳を作ろうと思っています。 簡単に申し上げると、 1つの行に入金欄と出金欄と残高欄とコメント欄という簡単なものです。 残高欄は、一つ上の行の残高+入金欄-出金欄としています。 計算式は、 =IF(AND(INDIRECT("E"&ROW())="",INDIRECT("F"&ROW())=""),"",INDIRECT("G"&ROW()-1)+INDIRECT("F"&ROW())-INDIRECT("E"&ROW())) でやっています。 子どもが勝手に行やセルを追加したり削除したりして、 残高のところがおかしくならないようにINDIRECTを使っているのですが、 さらに一歩進んで、マクロで行を追加していきたいのです。 ボタンを押すなどして、マクロを実行すると 入力するための行が10行いっぺんに追加されるようなものを作りたいのです。 初心者なりにやったところ、 たとえば、1行目に計算式だけを入れた行を用意しておいて、 マクロを実行して5行目から14行目に これをコピーさせることができました。 ところが、もう一度マクロを実行すると またしても5行目から14行目に上書きされてしまいます。 (5行目を選択して貼り付けしてくれているようです。) 2回目にマクロを実行すると空欄となっている 15行目から24行目に新しい欄ができ、 次にマクロを実行すると 25行目から34行目に新しい欄ができ・・・ としていきたいのです。 ずぶの素人の私にどなたか この方法をご教示頂けませんでしょうか。

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

  • ベストアンサー
  • 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

  • エクセルで出納帖を作成

    エクセルを利用して出納帖を作成したいのです。項目は日付、摘要、入金、出金、残高です。残高欄に計算式を入れたいのです。前残高に入金額をプラス、出金額をマイナスして残高が自動的に計算できるようにしたいのです。仮に、繰越残高があると、先のほうまで残高の数字が表示されますね。入金があった時点、出金があった時点で始めて残高が出るようにしたい。IF関数を使うそうですが、具体的に関数を教えてください。

  • マクロお願いします。

    A B C D E F G 日付 担当者 コード 顧客名 他 入金status  上記、入金status欄に、「入金済」という文字があり、それ以外は日付が入っています。この「入金済」と書いてある行を削除するマクロを組みたいと思っているのですが、まだ未熟なのでご助力のほどお願いします。 途中までですが、 sub リスト() dim 行 for 行=1 to 1000 if cells(行、6)="過入金"then ここからがわかりません。 end if next 行 end sub

  • Excelで作成する家計簿の残高欄に使用する関数について

    家計簿をExcelを使い作成しています。入金・出金した後の残高欄(金額)をそのまま最終行に移行(転記)したいのですが、どの様な関数を利用すれば簡単に移行(転記)出来ますか? 事例:   日付    入金   出金   残高   2/23   10,000       10,000   2/25         5,000    5,000 { 数行が空欄 }     (月末)            5,000 [転記]

  • マクロ・VBA初心者です。

    マクロ・VBAについて下記のような処理を簡素化できるかどうかお伺いさせて頂きたいです。 Excelシート前提条件 定期的に3社から入金(同じタイミングで受けております)を受けており、その入金を管理しているシートとなります。 A列には第何回目の入金か、B列には入金日を、C,D,E列には3社ごとの入金額が他のシートからとんでくるようになっており、F列には3社からの入金額をsum(C○:E○)で計算しております。 ※A2には「第一回目」、A3には「第二回目」のように入力されています。 ※○には、最新回文の行番号が入力されています。 このような設定とはなっていますが、新たに入金を受けると、前回分の1つ下の行に、前回分の数式をコピペし、また前回分のは前回分の行に値貼り貼り付けをしなおし、数式ではなく手打ちの入力と同じ形にしております。 つまり、数式が入力されているのは最新回の行のみで、過年度分は全て値貼りされ直されている状況です。 説明がへたっぴでごめんなさい( i _ i ) 前提条件は上記のようになっておりますが、 (1)最新回の行に、1つ上の行の数式をコピペする (2)コピペ後、前回分の行に前回分のを値貼りしなおす この(1)、(2)の動作をマクロ・VBAでできますでしょうか。 マクロ・VBAは初心者であるためなかなかうまくいかずに困っております。 ご指導のほど、宜しくお願い致します。

  •  いつまで経ってもパソコン超初心者でエクセルのマクロのことはまるでわか

     いつまで経ってもパソコン超初心者でエクセルのマクロのことはまるでわかりません。OSはXP3、ソフトはエクセル2000です。3列4行の表と3列3行の表を画像のように結合させるマクロを、ツール→マクロ→新しいマクロの作成→マクロ名&ショートカットキーの欄を埋めてマクロを記録させた所、セルをクリック・ドラッグしたところでしか結合させてくれません。任意のセルで実行させるにはどのようにすればよいのでしょうか。手取り足取りレベルでご教示いただきたくお願いします。

  • エクセルのマクロについてお願いいたします。

    エクセルのマクロについてお願いいたします。 E10~M10の500行全てのセルに数式が入っております。 そこでマクロにてコピーのボタンを設置しようと思ってます。 Range("E10:M10" & Range("M" & Rows.Count).End(xlUp).Row).Copy 画像のような数字の結果がある部分だけコピーをしたいです。 23行目からは数式が入ってますが結果は””空白になっております。 どうぞよろしくお願いいたします。

  • エクセルのマクロについて

    エクセルのマクロ実行についてですが、 例えば、 E1セルの値が1ならばこうする(マクロ名 E1セル1) E2セルの値が2ならばこうする(マクロ名 E1セル2) E3セルの値が3ならばこうする(マクロ名 E1セル3) というマクロを別々に作りました。 これをボタンで実行する時に、 If Range("E1").Value = 1 Then ElseIf Range("E1").Value = 2 Then 2行目には作ったマクロを全部貼り付けないといけないのでしょうか? それとも簡単にこの場合は、マクロ名E1セル1を実行するという命令することができるのでしょうか? できるのであれば、入力方法を教えてください。 質問が分かりにくいと思いますが、よろしくお願いします。

  • エクセル関数 合計について 教えて下さい。

    会社で 頁ごとの金額の合計、『計算後残高』を求める作業をすることになりました。 (1)下の表で、『項目』の返却は入金、延滞は出金で、   入金と出金が 混在しているのです・・・・              (わかりにくくて すみません・・・(+_+)) (2) 1頁の件数は データによって違い、 (3) 『計算後残高』(下の表では 6列)は、データによって列が定まらず、 (4) 『計算後残高』は、その頁のデータの最後の行だけに表示します。 どんな関数を使ったらいいのでしょうか? 何時間も考えておりますが、なかなか・・・・・(;_;q) ご回答を、お待ちしております m(u_u)m よろしくお願い致します!

  • エクセル2003で表を作成し、ある項目だけ抽出する方法

    エクセル2003で、出納帳を作成しています。 当然出納帳ですから、各セルには関数が入力されています。列がF列まで、行は永久に下まである表です。 B列に勘定科目として見出しをつけています。売り上げ、備品、出張費等10項目くらいあります。その項目を、1項目分の行すべて抽出し、別の場所に移動(同じ場所でもいいのですが)し、さらに残高、入金、出金欄をその抽出した行のみで再計算をする、というものです。 可能でしょうか?? オートフィルですと、きれいに項目別で抽出されるのですが、式の再計算まではしてくれません。その項目での入出金、残高を計算、表示する方法を教えてください。 よろしくお願いします。

  • Excelで通帳と同じ表を作るとき

    Excel で単純に 通帳と同じような表を作ると残金の所は自動で計算できますか A     B     C     D     E 入金詳細  入金額   出金詳細  出金額   残高       5000            3000                   2000  この記入方法で残高は自動計算できますか? 詳細の所には文字を入れたいです。 例えば、A給料 C衣類  など Excel初心者です よろしくお願いします

専門家に質問してみよう