- ベストアンサー
マクロで引き算して0にする
エクセルで任意のセルの値(正の整数)を引き算して、そのセルに”0”を表示するマクロはできますか。 たとえば、A1のセルに”50”と入力されているとき、マクロでA1のセルに”=50-50”という計算式を入力することはできますか。 データの入力されているセルのアドレス、および値ともに任意です。 教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> アクティブセルのみ実行させるにはどのように組みかえれば Sub test02() With ActiveCell .Formula = "=" & .Value & "-" & .Value End With End Sub
その他の回答 (4)
- merlionXX
- ベストアンサー率48% (1930/4007)
#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'マクロ終わり
補足
ご親切に有難う御座います。 が、大変すみません。!! アクティブセルのみ実行させるにはどのように組みかえれば宜しい ですか。 言葉足らずの説明で貴重な時間をさいて頂き申し訳ありません。
- merlionXX
- ベストアンサー率48% (1930/4007)
こんな感じでいかがでしょうか? 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
お礼
ご回答有難う御座いました。 無事うごきました。 これで作業効率がかなりUPしそうです。 とりあえずコピー&ペーストして使いますが、 解説書をみて勉強させていただきます。 初めての質問でしたが、ずっとほしかった答えが 見つかってとてもうれしいです。 本当に有難う御座いました。
- mshr1962
- ベストアンサー率39% (7417/18945)
入力というより値を数式に置き換える作業になりますが可能です。 例 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
補足
実行時エラー424 オブジェクトが必要です。 のエラーになってしまいました。 If Left(Target.Formula, 1) <> "=" Then の部分が黄色くなっています。 つたない質問ですみません。
- pbforce
- ベストアンサー率22% (379/1719)
なぜ引き算なのでしょうか? なにか入力のあるセルを0にするだけではダメなのですか?
補足
元に入力されていた数量を確認したいからです。 一時的に”0”に数量を変更したいのです。
お礼
今度こそ自分が欲しかった答えのようです。 本当に有難う御座いました。 いずれは私も誰かの質問に答えられるよう勉強に励みます。