• ベストアンサー

エクセルマクロでの行挿入

データを入力するフォームにコマンドボタンで行挿入したいのですが、うまく出来ません。最下段に合計する欄が設けてあるので、その直前に行挿入したいのです。挿入後も常に合計欄の直前に行挿入できるようにするにはどうすればよいのでしょうか?

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

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

行の挿入はわかると思いますので、最下行を調べる方法について・・ よく用いられている方法は、キーとなる列(その列の内容で判断しても良い列)を設定しておいてその列の入力値で最下行を求めるものです。 例えば、A列をキーとする場合で、対象とするシートオブジェクトをstとすれば、最下行番号は以下の式で求められます。 (もちろんループで順に探していく方法でも可能です。)   st.Cells(st.Rows.Count, 1).End(xlUp).Row '//下から見ていって最初の入力行 あるいは、列の最下行までデータに空白がないことがわかっていれば、以下でも同様です。   st.Cells(1, 1).End(xlDown).Row '//上から入力値が連続しているブロックの最後の入力行 最初の例では、下の方に空白などが入力されているセルがあると、(入力値は見えませんが)それを最下行と判断しますので、誤操作などでこのようなゴミが入力されることがないことを前提としています。 このようなことを避けたければ、最下行のユニークな値(例えば「合計」とか)を併せてチェックするなどの方法をとることで、確認することができるでしょう。

その他の回答 (1)

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

最終行(最下段の行)を求めれば挿入したい行となります。 あとは下へシフトするだけです。 マクロの自動記録が参考になるかと。