• ベストアンサー

Excel VBA 行の上書き足し算

L、M列の各セルを上書き足し算できるようにしたいです。 L2に2と入力して、次にL2に3と入力したら5になるというのを各セルでできるようにしたいです。 いろいろ試してみたのですがうまくいかず… わかる方、よろしくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1735/2605)
回答No.3

> L.M列に入力していた数字を消そうとしたら消えませんでした。 If Target.Column <> Columns("L").Column And _ Target.Column <> Columns("M").Column Then Exit Sub End If を If (Target.Column <> Columns("L").Column And _ Target.Column <> Columns("M").Column) Or _ Target.Value = "" Then Exit Sub End If に変更してください。

TKGNHIBATUNA
質問者

お礼

無事できました。 ありがとうございました。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1735/2605)
回答No.2

適用したいシートのプロシージャに以下のコードで試してみてください。シートタブ右クリックで出たメニューでコードの表示です。 Private Sub Worksheet_Change(ByVal Target As Range) Dim NewVal As Variant If Target.Column <> Columns("L").Column And _ Target.Column <> Columns("M").Column Then Exit Sub End If Application.EnableEvents = False NewVal = Target.Value Application.Undo If IsNumeric(Target.Value) = True And IsNumeric(NewVal) = True Then Target.Value = NewVal + Target.Value Else Target.Value = NewVal End If Application.EnableEvents = True End Sub

TKGNHIBATUNA
質問者

補足

L.M列に入力していた数字を消そうとしたら消えませんでした。 入力した数字をbackspaceやdeleteで消せるようにしたいのですが、そんな場合はどうすれば良いのでしょか?

  • SI299792
  • ベストアンサー率47% (780/1632)
回答No.1

基本的に不可能です。新しいデータを入れたら前のデータは消えます。 マクロを使い、どこか(別セル・別シート・メモリー)に前の数字を記憶しておけば不可能で はありません メモリーに記憶するサンプルです。メモリーなので、保存終了をすれば消えます。 1048576 行迄記憶するとメモリーの無駄なので 100行までにしました。 Option Explicit ' Private Sub Worksheet_Change(ByVal Target As Range)   Static SaveData(1 To 100, 12 To 13) As Double '   If Target.Count > 1 And Intersect(Target, [L1:M100]) Is Nothing Then     End   ElseIf Not IsNumeric(Target) Then     End   End If '   Application.EnableEvents = False   Target = Target + SaveData(Target.Row, Target.Column)   SaveData(Target.Row, Target.Column) = Target   Application.EnableEvents = True End Sub シートシートモジュールに入れて下さい。 Sheet1のシート名の所を右クリック、コードの表示を選び、そこに入れて下さい。

TKGNHIBATUNA
質問者

補足

行を増やしたいのですが、そんな場合はどうしたらいいのでしょうか?

関連するQ&A

専門家に質問してみよう