[[20070417112858]] 『表がいっぱいになったら挿入をしたい』(まゆ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『表がいっぱいになったら挿入をしたい』(まゆ)
 教えて下さい。
 受注管理をしていて、計算式の入った表に毎月受注内容を打ち込んでいます。
 月によって入力件数が異なるため、あらかじめ50行程計算式の入ったシートを
 作成して そこに内容を打ち込んでいます。
 表がいっぱいになったり、変更があったさいは行の挿入をして計算式を1回ずつコピー
 して使用していますが、それを1クリックで出来ないものかとマクロの記憶で行挿入に
 挑戦しました。
 しかし、挿入の対象の行がそれぞれの月で異なってしまうためうまくいきません。
 最終行には、合計が記載されているので、最終行より1行上に計算式の入った行を
 1行挿入するというのは可能でしょうか?


 慣れる楽なのですが…

 「データ→フォーム」から入力してみてはいかがでしょうか?
 直前行の数式や書式が継続されます
 一行=一シートで見られますので、横に長い表とかの入力も楽ですよ
 私は量が多い時、もっぱらこれで入力しています

 下の行を行ごとコピー→コピーしたセルを挿入 
 じゃ、ダメなんですよね?

 (Ohagi)

 Ohagi 様
 コメントありがとうございます。
 フォームというのは知らなかったので勉強になりました。
 早速試してみたのですが、VLOOKUPで店名などを出力しているため、少し
 打ち込みづらいというのが正直な感想です。
 私だけが入力するのであれば、Ohagiさんがおしゃって下さったように慣れると楽にな
 る作業なのかもしれないんですが、複数で共有しているファイルのためなかなか。。。
 せっかく教えて頂いたのに申し訳ありません。
 しかしこの方法は別の仕事に有意義に使用できそうなのでしっかり勉強して習得したい
 と思います!

 今まで、空白行(計算式の入った)がなくなるとその都度、挿入して
 書式と数式をコピーしていたので、今後もめんどうがらずそれで行くしかないかな^^;
 と考えております。
 (まゆ)


 表の詳しいレイアウトを教えて下さい。
 どの列のセルが定数(入力)で、どの列のセルが数式でしょうか?
 ご希望に近いものは、マクロの記録で出来そうな気がします。

 (HANA)

 コメントありがとうございます。
 表は下記のようなレイアウトになっています。
  A     B   C    D    E  F   G  H    I    J  
 客先コード 客先名 品コード1 品コード2 品名 数量 単価 合計 受注番号 伝票番号
 入力   式   入力   式   式  入力 入力 式  入力   入力

 正式にはA列〜N列までとなりますが、式が存在しているのはB列、D列、E列、H列の
 4箇 所です。

 この表をあらかじめ50行程作っておいて入力をしているのですが、月毎に入力件数が
 異なるため、増える度に、式をコピーして作成しております。
 1番下の行をコピーして挿入していましたが、受注状況を色付けで分けているものや
 コメントが入っているものもあり、1クリックで出来ないものかと
 マクロの記憶に挑戦してみたのですが、最終行より1行上に挿入するというのが
 うまくいきません。
 (最終行には合計金額が表示されているため)
 方法がありましたら、ご伝授下さい。
 (まゆ)

 えぇ?最終行の上に行挿入でっか?

 こんな塩梅でっか?
    (弥太郎)
 Sub test()
    mxrow = Cells(Rows.Count, 1).End(xlUp).Row
    Rows(mxrow).Insert
    Cells(mxrow, 1) = "Good"
 End Sub


 ありがとうございます。
 すみません。。
 弥太郎さんに教えて頂いたコードを実行してみたんですが何も変化が見れなかったです
 マクロに記録にこれを足すということでしょうか?
 (まゆ)

 ちゃいます、ちゃいます(汗
 最終行のうえに行を挿入したいわけでせう?
 新しいブックのA列に適当なデータを何行か書き込んで、testを実行すれば
 最終行の上に行が挿入されてそのセルにGoodと云う文字が浮かんできまっしゃろ?
 その最終行の上に行を挿入する簡単の例を呈示したんですけど・・・
 お分かりいただけました?
       (弥太郎)

 なるほど。確かに出来ました!すみません。。。
 このイメージで式をコピーしたままっていうのは可能でしょうか?
 マクロは記録の方法でしか行ったことがないので、良かったらどこに
 このコードを入れればよいかというのを教えて下さい。
 よろしくお願いします。
 (まゆ)

 ええと、まゆさんのレイアウトやと、B2、D2、E2、H2の式だけ最終行の一行上の
 行に挿入すればええんですわなぁ。
 それやと、こうなります。
   (弥太郎)
 Sub mayu()
    Dim mxrow As Long
    mxrow = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最下行を求める
    Rows(mxrow).Insert  'その行に行挿入 必然的に最下行が1行下に移る
    Range("a2:h2").Copy Cells(mxrow, 1)  'A2からH2(式を含めて)を挿入した行にコピペ
    Range("a" & mxrow & ":h" & mxrow).SpecialCells(xlCellTypeConstants).ClearContents
    '↑コピーしたうち 必要のないデータ(式を除いた)セルをクリア
 End Sub


 弥太郎さんありがとうございます。
 1つ問題がありまして、最終行は合計なので目立つようにその他の行と色や文字の
 色を変えてあります。
 教えて頂いた式を実行すると、書式も一緒にコピーされてしまいます(>_<)
 あと、式は消えてしまっていました。

 上記のような式は私には勉強不足で分かりませんので、自分でいじる事ができません。
 自分のレベルに合わせて、高望みせず、手で入力します。
 そして少しずつ、入力方法を自分なりに勉強したいと思います。
 お忙しい中お時間をありがとうございました。
 (まゆ)

 そうでっかぁ、当方もあんたはんの書式まではわかりまへんのんでしょうおまへん
 なぁ。ネット上でのやりとりですから、さういう行き違いはしばしば起こる問題な 
 んですわ、えぇ。
 >そして少しずつ、入力方法を自分なりに勉強したいと思います。
 私個人の意見として、最も賢明な方法やと思います。頑張って下さい。
        (弥太郎)        

 遅くなりました、ごめんなさい。
 「記録で挑戦」は、まだ継続していただけますかね?
 最初は単純に、『最終行の一つ上の行を挿入コピー』と
 考えていたのですが
 >受注状況を色付けで分けているものや
 >コメントが入っているものもあり
 と言うことですので、
 『コピー用の行を合計行の一つ下に作って於いて、
  それを挿入コピーする』に記録で挑戦
 の方法を提示させて頂きます。
 1行設けるのが難しい場合は、またその様に仰ってください。

 まず、
 合計行の1行下に、数式のみが入った行を用意してください。
 計算結果が見えてしまうのが煩わしければ、文字色を背景色と
 同じ色に設定しておいてください。
 (コピー先で色を元に戻す と言う手順が増えますが。)

 次に、記録中に【相対参照ボタン】と言う用語を使います。
 これは、マクロの記録を始めたときに出てくるツールバーの
 停止ボタン(■)の隣にあるボタンのことです。
 最初は押されていない状態から始めて下さい。

 記録マクロは、まゆさんが行った操作を記録するものです。
 各操作でエクセルはどのように動くのか、理解して於いてもらうと
「記録した時は、うまく行ったのに 実際使ってみると上手く行かない」
 なんて事態が起きた時に、原因が分かりやすいと思います。

 記録手順です。
 1.記録開始(相対参照ボタンが押されて“いない”のを確認)
 2.B1セルを選択
 3.Ctrl + ↓
 4.相対参照ボタンを押す(相対参照 選択)
 5.現在アクティブセルがある行を選択
 6.コピー
 7.一つ上の行を選択
 8.右クリック→コピーしたセルの挿入
 9.文字色を「自動」に変更。(文字色を背景色と同じにしていた場合)
 10.現在アクティブな行のA列を選択
 11.相対参照ボタンを押す(相対参照 解除)
 12.Esc(エスケープ)
 13.記録終了

 9番は、コピー用の行の状態によっては 必要ないかもしれません。
 10番は、マクロ終了後アクティブにするセルを選択しています。
  どこか固定の場所を選択したいなら、11番の手順の後
  そのセルを選択してください。
  (その場合、10番の手順はとばします。)

 これでうまく行きますかね?

 (HANA) 訂正しました。1:00

 弥太郎さま
 コメントありがとうございました。
 昨日、vbaの入門書を書店に探しに行きました。
 何冊か見て、購入したいと思っています。
 この学校に登校するようになって、とても興味がわいていますので、
 色々勉強していきたいと思います。
 また色々ご指導ください。

 HANAさま
 ご親切にありがとうございます。
 早速、挑戦してみたのですが相対参照ボタンというのが見つかりません。。
 エクセルのヘルプで見てみると。[記録終了] ツールバーの  (相対参照) をクリック
 とあるのですが、記録終了ツールバーを開いても見当たりません。。

 申し訳ありませんが教えて下さい。

 「記録終了ツールバー」は出るのですかね?
 こちらの(3)のツールバーです。
https://www.excel.studio-kazu.jp/lib/e4b/e4b.html
 ■の右側にあるボタンがそれなのですが・・・・

 どのようなツールバーが出ているのでしょうか。
 ■ボタンしか無い状態なのですかね?

 (HANA)

 ■記録終了(R)とだけ書かれている状態です。
 右側には何も存在していません。。
 (まゆ)

 HANA様
 すみません。今発見しました。
 表示→ツールバー→記録終了にチェックを入れたところ表示されました。
 お手数をおかけしてすみません。
 今から挑戦してみます。 
 ありがとうございます!!
 (まゆ)

 挑戦してみましたがうまくいきません。
 合計の行が挿入されてしまいます。

 Sub 行挿入()
'
' 行挿入 Macro
' マクロ記録日 : 2007/4/19  ユーザー名 : 
'

'

    Range("B1").Select
    ActiveWindow.SmallScroll Down:=45
    ActiveCell.Offset(61, 0).Rows("1:1").EntireRow.Select
    Selection.Copy
    ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
    Selection.Insert Shift:=xlDown
    ActiveCell.Select
    Application.CutCopyMode = False
End Sub

 (まゆ)

 今パソコンの前に居ないので、確認だけさせてもらいたいのですが
 3番の手順で、合計行の一つ下にアクティブセルは移動しますか?
 また、移動後  行選択前に  相対参照ボタンをおしましたか?
 (なんだか、B1選択後にボタンが押されて居る気がします。)

 (HANA)

 ご指摘ありがとうございます。
 3番の手順、Ctrl + ↓を3回繰り返す事で合計の行の
 1つ下に移動することができました。
 おかげさまで希望していた行挿入をおこなうことができました。
 本当にありがとうございました。
 (まゆ)

 残念ながら、それは余り嬉しいご報告ではありませんね。
 表が1行目から始まって居ないのでしょうか?
 もしよろしければ、シートの構成を詳しく教えて下さい。

 (HANA)

 失礼しました、重要な一言が抜けておりました。

 まゆさんが、記録をとった手順を理解した上での現在のマクロなら
 嬉しい報告であり、異論はございません。

 せっかくですので、コードを載せてみませんか?

 (HANA)

 遅くなり申し訳ありません。
 私なりにHANAさんに教えて頂いたコードを理解したつもりではいますが相対参照、絶対
 参照など初めて知った内容もあり、本当に楽しくなってきました。
 罫線を変更というのも加えて作ってみました。

    Range("B1").Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    ActiveCell.Rows("1:1").EntireRow.Select
    Selection.Copy
    ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
    Selection.Insert Shift:=xlDown
    ActiveCell.Range("A1:N1").Select
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    ActiveCell.Select
End Sub

 これから少しずつ勉強して色々なコードを組めるようになれたらと思います。
 ありがとうございました!!

 欲が出てきて、色々試してみたんですが、挿入後に合計に入っている計算式を
 データの最終行までという形に変更することは可能でしょうか?
 教えて頂いた相対参照で合計行の1つ上というのをやってみたんですが、
 うまくいきませんでした。
 過去ログを見て勉強してみましたが、ピンとくるものがなく、
 もしありましたら教えてください。
 よろしくお願い致します。
 (まゆ)

 私の呈示した方法は「記録」ですので、今回の物を使っていくのなら
 まずは「操作」を理解してください。
「Ctrl+↓ をするとどうなるのか?」と言う事です。

 シート構成の御提示がないので違っているかもしれませんが、
 今回話題になっている表が1行目から始まって居ないのですよね?
 1行目からは何が入っていますか?
 シート内で表が2つある場合で、下側の表の最下行を選択したい場合
 まゆさんのやられた様な Ctrl+↓ を3回行う で対応出来ますが
 もしも、下側の表が必ず決まった行から始まるのであれば
 2番目の手順で、B1(1行目)を選択するのではなく、下側の表の
 先頭行を選択するのが良いと思います。

 >挿入後に合計に入っている計算式をデータの最終行までという形に変更
 単純に記録でやるなら、2つの方法があると思います。
 SUM関数は、引数の範囲内での行挿入の場合 数式の範囲は拡張されます。
 ですから、拡張される様に行を挿入する記録を取ってください。

 たとえば、合計行が10行目で=SUM(B1:B9)と言う式が入っていた場合
 今回提案した方法では、「11行目をコピーして、10行目に挿入」ですので、
 =SUM(B1:B9)のままですよね。
 今までの方法では、「9行目をコピーして、9行目に挿入。10行目の不必要な部分を削除」
 ですので、=SUM(B1:B10)になります。

 二つの方法の内の1つが、「今までの方法を記録」です。
 (最終行・その一つ上 等の記録方法は分かりますよね?)

 もう一つの方法は、合計行の一つ上の行を非表示にして於いて
 範囲がいっぱいになる一つ前に、行を挿入させる様にする方法です。
 記録を取る際は、行が選択出来ないので 表示させておく事になりますが
  最下行を選択、(相対参照に変更)行のコピー。
  合計行の一つ上の行を選択。挿入貼り付け。
 合計範囲の最終行である9行目の一つ上に挿入されるので、範囲は拡張されます。
 記録終了後、“うっかりすべての行に入力しないために”合計行の
 一つ上の行は非表示にしておきます。

 こんな小細工が通用しますかね?

 (HANA)

 HANAはん、下から失礼します。(笑
 えと、これは行挿入したH列の最下行を求めて、そこへ式を書き込んだら宜しいかと
 思われます。
 先ず変数maxrowにH列の最下行を格納します。
     maxrow = Range("H" & Rows.Count).End(xlUp).Row
 次にH列最下行にH2から一つ上の行までを計算する式を書き込みます。
   Range("H" & maxrow).Formula = "=Sum(H2:H" & maxrow - 1 & ")"
 といった塩梅に。
 これで最下行にそれまでの合計が表示されまっせ。

 それはそうとHANAはん、最近明らかにあんさんのHNをもじったイヤな輩が出没しとり
 まんなぁ。それがし同様この学校関係者全てが不快感をおぼえとるに相違おまへんワ。
 Kazuさん、ご覧になっとったら善処して下さるよう、お願いしときます。
       (弥太郎)

 まゆさん、スレお借りします。

 弥太郎さん
  ご心配をおかけして申し訳ないです。
  &不快を感じさせてしまって、恐縮です。
  色々心がけますので(笑) 今後ともおつきあいの程
  宜しくお願いいたしますね。

 (HANA)

 HANAはん、あんさんが恐縮する事はおまへんで。
 ただあんまりあんさんが神経質になるとヤッコさんの思う壺ですから、タチの悪い
 酔っぱらいに(あの、私やおまへんで、えぇ(笑 )絡まれた位に思うて、笑い飛ばし
 てやりまひょで。
 あぁ、〜〜、まゆさんごめんなはれや、あんまり目ぇに余るモンで(汗
 駄レス失礼しました。
      (弥太郎)

 弥太郎さん、ご心配なく。間違えたりしませんよ。
 弥太郎さんは、タチの良い酔っぱらいですものね。
 (あっっ、ごめんなさい。つい勝手な憶測が・・・。
  これは珍しく、外してないと思うんですけどねぇ。笑)

 無駄口たたいている内に、またしても本題を・・・・。
 ↓追記。(汗)
 弥太郎さん、お心遣い深く感謝致します。

 (HANA)

 HANAさん、弥太郎さんコメントありがとうございます。
 今朝出勤して早速挑戦をしてみたのですが。。。

 >先ず変数maxrowにH列の最下行を格納します。
     maxrow = Range("H" & Rows.Count).End(xlUp).Row
  この式はどこにいれれば良いのでしょうか?合計の行ですか?

 >次にH列最下行にH2から一つ上の行までを計算する式を書き込みます。
   Range("H" & maxrow).Formula = "=Sum(H2:H" & maxrow - 1 & ")"

 これは挿入するために設けた合計行の下のHにこの式を書き込めばよいということ
 なのでしょうか?
 初めて見る関数でヘルプなどで見てみたのですがうまく検索ができませんでした。
 お手数ですが教えて下さい。
 (まゆ)

 要するに行挿入した後やったらどこにでもそれを書き込めばよろしいんですワ。 
 まゆさんのコードから云えば
 Selection.Insert Shift:=xlDown
 の下あたりですかな。
 行挿入した時点で、H列最下行の合計欄に記入した関数は(推測ですけど=SUM(H2:
 H20 みたいに書かれてまっしゃろ?)そのままで、必要な関数=SUM(H2:H21)には
 なっとりまへんわなぁ。
 せやからその合計欄に新たに=SUM(H2:H21)の関数を書き変えるコードを付け加えるワケ
 なんですワ。
 ところで、あのマクロの記録、上手いこといきまっか?アカンような気ぃがしますが。
      (弥太郎)


 下記のような入れ方でよろしいでしょうか?
 このやり方でやってみたら、合計行の更に下に、全ての個数+合計
 の値が出てきてしまいました(>_<)
 行の、挿入自体は今の所問題なく動いています。

    Range("B1").Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    ActiveCell.Rows("1:1").EntireRow.Select
    Selection.Copy
    ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
    Selection.Insert Shift:=xlDown
    maxrow = Range("H" & Rows.Count).End(xlUp).Row
    Range("H" & maxrow).Formula = "=Sum(H2:H" & maxrow - 1 & ")"
    ActiveCell.Range("A1:N1").Select
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    ActiveCell.Select
End Sub

 (まゆ)

  HANAさんに教えて頂いたものを参考にさせて頂いて下記のように作ってみました。
 うまくいきそうなのでこの方法で試してみます。
 弥太郎さんに教えて頂いたコードについては家でゆっくり勉強します
 ありがとうございました☆

  Range("B1").Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    ActiveCell.Rows("1:1").EntireRow.Select
    Selection.Copy
    ActiveCell.Offset(-2, 0).Rows("1:1").EntireRow.Select
    Selection.Insert Shift:=xlDown
    ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
    Selection.EntireRow.Hidden = True
    ActiveCell.Offset(-1, 0).Range("A1").Select
    Application.CutCopyMode = False
  End Sub
 (まゆ)

 どうもまゆさんとは意見があいまへんなぁ(笑							
 私が想定しとるレイアウトはこうなんですワ。							
    A	    B	  C	 D	  E	  F	G	H
 1客先コード客先名	品コード1品コード2品名	数量	単価	合計			
 2  100	A100	123	C123	 C123型	5	200	1000
 3  200	A200	111	C111	 C111型	10	250	2500
 4  300	A300	345	C345	 C345型	6	300	1800
 5  400	A400	555	C555	 C555型	9	400	3600
 6  500	A500	233	C233	 C233型	12	500	6000
 7  600	A600	101	C101	 C101型	5	600	3000
 8  700	A700	202	C202	 C202型	8	700	5600
 9 合計						        23500	
                                                                ↑							
                                                               =SUM(H2:H8)							
  せやからなぜ
     Range("B1").Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
 こんなコードが有効なのかは理解でけまへんねん。
 おそらく空白行がなんぼかあって最終行に到達したんやとおもいますけど、
 それやったらRange("B" & Rows.Count).End(xlUP).Selectであきまへんか?
 さらに合計行の下に個数+合計が出るっちゅうんも解せませんなぁ・・・
 いっぺん新しいブックに上のようなデータを書き込んで下のコードで試してみて
 おくんなはれ。このような事とは違うんですか?
 まゆさんの最終行界隈の2,3行のデータを例示してくれると有り難いんですが・・  
 作業終了で欲しい結果もですよ。      
(弥太郎)
  Sub mayu()
    Dim maxrow As Long

    Rows(Range("H" & Rows.Count).End(xlUp).Row).Insert
    maxrow = Range("H" & Rows.Count).End(xlUp).Row
    Range("A" & maxrow - 2).EntireRow.Copy Range("a" & maxrow - 1)
    Range("H" & maxrow).Formula = "=Sum(H2:H" & maxrow - 1 & ")"

 End Sub


 弥太郎さん
 理解力が乏しく申し訳ありません!!
 いつか「気が会いますな〜!」
 と言ってもらえるように頑張ります!!
   Range("B1").Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
 については空白行をなくしてみても一応最終行に到達はしたんですが
 なぜか?と言われると。。分かりません(>_<)
 >それやったらRange("B" & Rows.Count).End(xlUP).Selectであきまへんか?
 教えて頂いたコードで出来ました。
 私が最終行としておいてたのが合計の行でなく、式と罫線のみをコピーしたものを
 置いておいたためにおかしな事になっていたようです。すみません。

 最終行界隈も上の行が増えていくだけのためあまり違いはないんですが、合計として
 出したいものに、F欄の数量もあります。

  A     B   C    D    E  F   G  H    I    J  
 客先コード 客先名 品コード1 品コード2 品名 数量 単価 合計 受注番号 伝票番号
 AAA   あいう  AA11  AA11-1 マクロ  11  100 1100 12345   23456
 BBB   えおか  BB22  BB22-3 JYロマ  10   50  500 22587   11478 
                   合計 21     1600

 作業終了で欲しい結果としては、合計行の上に計算式と罫線のみの空白行を挿入
 合計行のF欄とH欄に合計行を除く最下行までのSUM式を入力
 としたいです。

 F欄の合計については
 Range("H" & maxrow).Formula = "=Sum(H2:H" & maxrow - 1 & ")"
 この行をFに変更して作る事ができました。

 下手な説明で余計ややこしくなってるかもしれません。。。。
 (まゆ)
    

 ですから私は
 >まずは「操作」を理解してください。
 >「Ctrl+↓ をするとどうなるのか?」と言う事です。
 と言ってるのですがね・・・。
 >表が1行目から始まって居ないのでしょうか?
 という問いかけにもお答えがないようですし。

 まぁ、弥太郎さんがまゆさんの希望する動きをするコードを
 作って下さると思いますので、頑張って下さい。
 完成したコードをじっくり見て考えれば
 まゆさんなら、きっと理解できると思いますよ。

 (HANA) こちらも無駄レス失礼。

 なるほろ〜、さういうレイアウトになってますねんな。道理で波長が合わん筈ですワ。
 で、まぁ、初めに
    Range("B1").Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
 これの事ですけど
    Range("B1").Select
    Selection.End(xlDown).Select
    MsgBox Selection.Row
    Selection.End(xlDown).Select
    MsgBox Selection.Row
    Selection.End(xlDown).Select
    MsgBox Selection.Row
    ActiveCell.Rows("1:1").EntireRow.Select
    Selection.Copy
 こうして実行してみてくらはい。
 とんでもないところがselectされてまっしゃろ?
 それがしが理解でけんっちゅうのがそれなんですわ、えぇ。

 ま、それは置いといて
 こんな塩梅になればよろしいんでっか?
       (弥太郎)
 '------------------
 Sub mayu1()
    Dim maxrow As Long
    maxrow = Range("A:N").Cells.Find("*", , , , xlByRows, xlPrevious).Row
    '↑列A:Nの中の最下行を変数に格納
    Rows(maxrow).Insert
    '↑そこへ行挿入
    Range("A" & maxrow - 1).EntireRow.Copy Range("A" & maxrow)
    '↑一行うえの行を挿入した行にコピペ
    Range("F" & maxrow + 1).Formula = "=SUM(F2:F" & maxrow & ")"
    Range("H" & maxrow + 1).Formula = "=SUM(H2:H" & maxrow & ")"
    '新たな合計行のF及びH列にそれぞれ合計の式を書き換え
    'Rows(maxrow).SpecialCells(xlCellTypeConstants) = ""
    '↑コピペした行の式だけ残し、後のセルはクリア
 End Sub
 尚、コードの左の列にグレーゾーンがありまっしゃろ?
 そこへ、例えばmaxrow=...の行あたりのそのゾーンをクリックしますと行全体が茶色
 に着色されますワ。(ブレークポイント)
 一旦エクセルに戻り、マクロを実行するとその行でマクロが一時停止してくれます。
 マウスポインターを変数に近づけるとその値をチップテキストが教えてくれます。
 F8を押し下げると一行マクロの作業が実行され、エクセルに戻って確認すれば、今の
 一行がどんな作業をサボらずやってのけたか良くお分かりになると思われます。
 ブレークポイントを解除するには同じ所をクリックします。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.