• ベストアンサー

Excel VBA 行の上書き足し算

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

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答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
  • ベストアンサー率65% (1620/2459)
回答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
  • ベストアンサー率48% (715/1480)
回答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

  • エクセルで、1つのセルで上書き足し算できますか?

    こんばんは パソコン初心者です。お時間があったらお答えをおねがいします!たとえばエクセルで1つのセルに10と入力しておいて、そのあと5を足し算したいときに、 他のセルを使わないで、その10と入力してあるセルに、上書きのようなかたちで簡単に足し算できないでしょうか? (10、のあと5、エンター、で足し算完了のような。。。) 実際はもっと長い数字なのですが、いまは先に計算しておいて入力してます。。。簡単にできたらいいなぁと思っています。

  • ExcelのVB:足算

       53    54       3     4         24    25        6     7         71    72            と左から右に足算(+1)したいのですが、 例えば、 For l = 1 To 12 A(l) = Sheet1.Cells(2 + l, 1) Next l でセルを読み込み(1列3,4,5,・・・・行目) For i = 1 To 12 l = 1 GoSub abc Sheet1.Cells(i + 2, 5) = A(l) l = l + 1 Next i Exit Sub abc: A(l) = A(l) + 1 Return で足算したのを5列目の3、4、5、6、・・・・行目に出力します。 このプログラムでは、上手く足算されませんでした。 どこが悪いのでしょうか?教えてください。

  • Excel VBA 実行しない

    お世話になります。 ExcelのVBAで列に上書き足し算を入れているシートが、上書きできなくなってしまいました。 コードを表示で確認しましたが、コード自体は入力されています。 元に戻す方法はありますでしょうか。 毎日使ってるのでとても困ってます。 お分かりになる方、至急教えて欲しいです。 よろしくお願いします。

  • エクセルの足し算

    エクセルで四捨五入の計算式を入れたセルどうしを足し算すると1合わなくなってしまいます。 セルAに620が入っていて、セルBにAの値620×167.66四捨五入をした数字を入れ、その結果のセルBの値を3行足し算すると1合わなくなります。 セルBは103,949になり3行足すと311,848になってしまうのです。 どうしたら良いか教えてください。

  • エクセルで、同一セル内に自動的に足し算をすることはできますか?

    質問をご覧になっていただきありがとうございます。 家計簿を作っておりまして、列に日付、行に項目を入れてます。 金額を入れると列と行とその月の総合計が出るようにはできたのですが、 例えば2つの店で項目「食費」の買い物をしたとします。 現在はレシートを見て電卓で「食費」の合計を出してセルに入力してるのですが、 せっかくエクセルを使っているので電卓は使いたくないと思っています。 そこで、同一セル内に数字を打ち込んでいくだけで、自動的に足し算にする方法はないでしょうか? 数字を打ち込むだけではなく、多少の操作があっても構わないので、 とにかく電卓を使わずに処理してみたいと思ってます。 ご存知の方がいらっしゃいましたら、どうかよろしくお願いいたします。

  • EXCEL IF関数

    M列に日付が入力されています。 K列には内or外と入力されています。 L列には K列が"内"であればM列の3日前 K列が"外"であればM列の7日前 の日付を返す。という式を入力したいのですが、 例 セルM1 "9/10"  セルK1 "内"  セルL1 "9/7" 宜しくお願いします。

  • VBA アクティブ行の削除

    エクセルで、アクティブにしているセルの行のA列からL列のみを削除というマクロを組みたいのですが、どのように記述したらいいのでしょうか? アクティブなセルはA列~L列のどこにあっても、その行のA列-L列を削除というようにしたいです。 (例1) A1がアクティブだった場合、A1~L1が削除される (例2) B4がアクティブだった場合、A4~L4が削除される すみませんが、お分かりになる方がいましたらよろしくお願いいたします。

  • エクセルで数値を入力しなくても足し算をするには?

    エクセル初心者です 数値を入力せず、「色をつけたセルは全て10という値として、足し算する」ということはできないでしょうか? その色をつけるセルには、文字を入力したいと思っています。 不可能でしょうか?

  • エクセルの足し算の方法について質問をしたいのでよろしくお願いします。

    エクセルの足し算の方法について質問をしたいのでよろしくお願いします。 A1セルに¥1000と入力B1セルに¥1500と、入力した際、自動的にC1セルに合計金額を表示させるには どのようにすれば良いでしょうか? どなた様か、ご指導のほどよろしくお願いします。

  • Excel VBAでデータを並び替えたい

    D~M列に値が10個入っています。 D1,E1の値を取り出して、A1,B1セルに移動させ、 次はF1,G1の値をA2,B2に移動させ、それをL1,M1をA5,B5に移動するまで繰り返し、 次はD2,E2の値をA6,B6へ移動させ、L2、M2まで繰り返します。 横に10個の数値が入っているものから、2つずつ取り出して 2列縦に値を並べたいのです。 元の値が並んでいるところ(D~M列)は、ところどころ値が10ではなく、4だったり、6だったりしますが、 5つ目と6つ目以降、あるいは7つ目と8つ目以降の値も空白としてA,B列に移動させたいです。 ご教示くださいますよう、お願いします。

専門家に質問してみよう