セルクリックで簡単に数字を+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】
コメント