• ベストアンサー

マクロで引き算して0にする

エクセルで任意のセルの値(正の整数)を引き算して、そのセルに”0”を表示するマクロはできますか。 たとえば、A1のセルに”50”と入力されているとき、マクロでA1のセルに”=50-50”という計算式を入力することはできますか。 データの入力されているセルのアドレス、および値ともに任意です。 教えてください。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

> アクティブセルのみ実行させるにはどのように組みかえれば Sub test02() With ActiveCell .Formula = "=" & .Value & "-" & .Value End With End Sub

thun7
質問者

お礼

今度こそ自分が欲しかった答えのようです。 本当に有難う御座いました。 いずれは私も誰かの質問に答えられるよう勉強に励みます。

その他の回答 (4)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

#3 merlionXXです。 意味がわからないと不安でしょうから一応簡単に逐条解説をつけますね。 Sub test01()'マクロ始まり With ActiveSheet '現在見えているシートにおいて On Error GoTo line 'エラーが発生したらline:に飛ぶ(数値のセル無ければエラー) Set Rng = .UsedRange.SpecialCells(xlCellTypeConstants, 1) '使用範囲内で数値のセルをRngと名付ける For Each c In Rng 'Rngの各セルをcとし、各cで c.Formula = "=" & c.Value & "-" & c.Value 'cの式を"=cの値-cの値"とする Next '繰り返す End With 'with文終了 Exit Sub 'マクロから抜ける line: 'エラーで飛んできたら MsgBox "数値がありません。" 'メッセージを出す End Sub'マクロ終わり

thun7
質問者

補足

ご親切に有難う御座います。 が、大変すみません。!! アクティブセルのみ実行させるにはどのように組みかえれば宜しい ですか。 言葉足らずの説明で貴重な時間をさいて頂き申し訳ありません。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

こんな感じでいかがでしょうか? Sub test01() With ActiveSheet On Error GoTo line Set Rng = .UsedRange.SpecialCells(xlCellTypeConstants, 1) For Each c In Rng c.Formula = "=" & c.Value & "-" & c.Value Next End With Exit Sub line: MsgBox "数値がありません。" End Sub

thun7
質問者

お礼

ご回答有難う御座いました。 無事うごきました。 これで作業効率がかなりUPしそうです。 とりあえずコピー&ペーストして使いますが、 解説書をみて勉強させていただきます。 初めての質問でしたが、ずっとほしかった答えが 見つかってとてもうれしいです。 本当に有難う御座いました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

入力というより値を数式に置き換える作業になりますが可能です。 例 Private Sub Worksheet_Change(ByVal Target As Range) '数式を除外 If Left(Target.Formula, 1) <> "=" Then Exit Sub 'A1以外のセルと文字列を除外 If Target.Address = "$A$1" And IsNumeric(Target) Then '数式をセット Target.Formula = "=" & Target.Value & "-" & Target.Value End If End Sub

thun7
質問者

補足

実行時エラー424 オブジェクトが必要です。 のエラーになってしまいました。 If Left(Target.Formula, 1) <> "=" Then の部分が黄色くなっています。 つたない質問ですみません。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

なぜ引き算なのでしょうか? なにか入力のあるセルを0にするだけではダメなのですか?

thun7
質問者

補足

元に入力されていた数量を確認したいからです。 一時的に”0”に数量を変更したいのです。

関連するQ&A