Private Sub Worksheet_Change(ByVal Target As Range)
If (1 <= Target.Row And Target.Row <= 15) And (1 <= Target.Column And Target.Column <= 5) Then
total = Worksheets("Sheet4").Cells(Target.Row, Target.Column).Value + Cells(Target.Row, 7).Value
Rem total = Worksheets("Sheet4").Cells(Target.Row, Target.Column).Value + Cells(Target.Row, Target.Column + 6).Value
Cells(Target.Row, 7).Value = total
Rem Cells(Target.Row, Target.Column + 6).Value = total
End If
End Sub
上記のIF文後半は、入力を拾いたい列が連続した複数行の場合です。
これですと「入力値が変化したセルが、1から15行目の中で、かつ、
1列から5列、つまり、A列からE列の場合」となりますネ。
入力列が飛び飛びの場合は
If (1 <= Target.Row And Target.Row <= 15) And (Target.Column = 1 Or Target.Column = 5) Then
てな具合かな。行が飛び飛びの場合も同様の考え方でOKです。
次に累計計算と表示部分ですが、上記のコードは第7列、つまりG列に固定になります。
A1セルからE15セルの範囲に入力された値はすべて各行G列に累計されます。
Rem total...とRem Cells...で始まる2行ペアですと、
A1セルの入力値はG列に累計され、B1セルの入力値はH列に累計され...
つまり、入力セル列から6列離れたセルに累計される、といえばいいのかな、です。
Remをはずして(当然対応するもう一方の行はRem文でコメントアウトして)
色々確かめてみてください。
まっ、そろそろ日本酒でデキあがってきた頃でしょうからボチボチとやってください。私も来週は飲みに行こうかな、っと...
お礼
おはようございます。昨夜あれから少しいじってみたのですがやはり無知の悲しさ。力技での処理以外はいかんともしがたくてそれ以外の方法をあきらめてしまいました。(2時30分位までお返事は待っていたのですが・・) まったく今回はお世話になりました。これから本屋さんに行ってVBA教本を購入してきます。 とりあえずは、求める答えを出せるようになったのでこのまま上司に渡してしまいます。 もしまた質問が発生したらよろしくお願いします