セルクリックで簡単に数字を+1したい
エクセルで販売個数の記録を作成し、運用している企業様も多いのではないでしょうか。
単純なシングルクリックでカウントアップ(数字を+1)できれば、誰でも運用できます。
SelectionChangeを利用して、シングルクリックでチェックを付けましょう。
セルクリックした場合に処理を実行する【SelectionChange】【ExcelVBA】
※小売で販売個数の記録するのであれば、マクロよりPOSレジを導入をお勧めします。
セルクリックで簡単に数字を+1するサンプルコード
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '■特定セル範囲で起動させる If Not Intersect(Target, Range("A2:A500")) Is Nothing Then '該当セルが空白もしくは数字以外なら1にする/それ以外はカウントアップする If Cells(Target.Row, Target.Column) = "" Or IsNumeric(Cells(Target.Row, Target.Column)) = False Then Cells(Target.Row, Target.Column) = 1 Else Cells(Target.Row, Target.Column) = Cells(Target.Row, Target.Column) + 1 End If End If '■連続してSelectionChangeは動作しない為、A1選択状態に戻す Range("A1").Select End Sub
今回はシングルクリックですが、ダブルクリックで処理する事も可能です。
セルがダブルクリックされた場合に処理を実行する【BeforeDoubleClick】【ExcelVBA】
※Range(“A1”).Selectの処理が好ましくないのであれば、ダブルクリックのがいいでしょう。
注意事項
- 標準モジュールでは動作しません。ワークシートモジュールに記載しましょう。
- サンプルコードなので最低限しか記載していませんが、範囲はCellsをうまく使用するべきです。
RangeとCellの使いわけ【VBA基本】 - 上記の場合、開始行が不変であれば、定数にしましょう。
- 上記の場合、最終行は可変だと思いますので、パーツ化した処理で最終行を取得しましょう。
ExcelVBAマクロ「最終行」「最終列」の判断処理をパーツ化する
ExcelVBAマクロ-ヘッダー行を加味して「最終行」取得処理をパーツ化する
関連記事
特定のセルをクリックした場合に処理を実行する【SelectionChange】【ExcelVBA】
チェックシートの入力を簡単に行う(SelectionChangeでクリックで入力完了)【ExcelVBA】
特定のセルをダブルクリックした場合に処理を実行する【BeforeDoubleClick】【ExcelVBA】
コメント
数字を減らしたり消したりする方法は?
別のセルをキーにしてそのまま減らしたり、文字を空白で入れたりするコードを書くだけかと思います。
運用ルールなどもあるかと思いますので、必要あれば有償対応致します。お気軽にお問い合わせください。https://vba-create.jp/contact/
カウントアップの範囲外のセルをクリックした場合もA1に戻ってしまうのですが範囲外のセルをクリックしたときはA1に戻らないようにするにはどうすればいいですか
Intersectで範囲を指定していますので、その条件外にすればよいかと。不明点あれば1質問500円でお受けしますのでお問い合わせページよりご連絡ください。