• ベストアンサー

引数が決まらない合計を出す

毎日SUM関数で合計を出していますが、もっと簡単に出せないかと思い質問しました。H5からデーター(数字)が下に入っていきます。(H5.H6.H7.・・・・・)日によって最後の行が違います。(シートは毎日違いますが最初に入る場所はH5からと決まっています。)昨日はH5~H20でした。今日はH5~H27ですと日によってばらばらです。計算のしかたですが、H20で終わりとした時は、合計ボタンを押したらH5~H20までをH21に合計を表示するにはどうすればいいのですか?(ボタンの作り方はわかります。図形を作り右クッリクでマクロの登録で作ります)アプリケーションはExcel2000です。よろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

ボタンはコントロールツールボックスのコマンドボタンとしています。 セルの値を加算すると、数値、文字の判定も必要になるので、ワークシート関数のSUMを使っています。 合計値は最終入力行の次に書いています。 CommandButton1 がSheet1にあれば、下記コードもSheet1のコードウインドウに貼り付けます。 Private Sub CommandButton1_Click()   Dim maxRow As Long '入力最終行   maxRow = Application.Max(Range("H65536").End(xlUp).Row, 5)   Range("H" & maxRow + 1) = Application.Sum(Range("H5:H" & maxRow)) End Sub

kkazumi
質問者

お礼

どうも、ありがとうございました。

kkazumi
質問者

補足

また助けてもらって、どうもありがとうございました。うまくいきした。また、よろしくお願いします。・・・・カズミ

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

I5セルに合計を入れるとして、データをH5以下に列に入力終了後、ボタンをクリックすると答えが出ます。 Private Sub CommandButton1_Click() a=Range("h5").CurrentRegion.Lows.Count Worksheets("sheet1").Range("i5")=Application.WorksheetFunction.Sum(Range(Cells(5,8),Cells(4+a,8))) Sub End 実質中身2行で短く出来ます。(上記で強制的に改行されている個所があります。注意してください。)

kkazumi
質問者

補足

この行にエラーがでました。a = Range("h5").CurrentRegion.Lows.Count 実行時エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

VBAを使って空白が来るまでの合計という感じではどうでしょうか? こんな感じで Private Sub CommandButton1_Click() Dim total As Double '//合計値 Dim a As Variant '//途中の値 Dim x As Integer, y As Integer '//セルの位置 x = 8 '//セルHの y = 5 '//5行目から Do a = Sheet1.Cells(y, x).Value total = total + a If a <> "" Then y = y + 1 '//空白でなければ次の行へ移動 Loop While a <> "" '//空白なら抜ける Sheet1.Cells(y, x).Value = total '//空白がみつかったらそこに合計値を書く End Sub

kkazumi
質問者

補足

データーの入ったシートにマクロを入力し実行すると実行時エラー'1004'アプリケーション定義または、オブジェクト定義エラーですと出ます。しかし、何も書いていないシートにマクロを入力しH5から適当に数字を入力して実行するとOKです。データーの入ったシートではなぜ、だめなんですか。どうすればいいのですか?よろしくお願いします。

関連するQ&A