【エクセルVBA】行の範囲を可変にして自動合計(changeイベント)

投稿者: | 2020年11月24日
excelアイコン

エクセルバージョン

マイクロソフト365

 

前回関数でsumの可変自動合計をデモしてみましたが、今回はVBAでも可能なので実施してみたいと思います。

完成後

VBA可変合計changeイベント

 

それでは行ってみましょう\(^^)/

 

今回の作成ポイント

作成にあたり下記のような流れで作成します。

ポイント

・シートモジュールで、どの行が変わったら処理を実行するかを判別。

(changeイベント)

・標準モジュールで、結果を表示させる。

 

VBAコード

①シートモジュール

シートモジュールの場所が分からない場合は下記

https://dailyrecords.blog/archives/6207#i-5

 

シートモジュールを開いたら下記のようにWorksheetを選択します。

シートモジュール

 

表示されたら全て消去して下記をコピペします。

 

 

行の開始位置を指定(初期はA1)と最終行の何個上かを指定

下記の黄色の部分を変更すれば開始行最終行の3つの変更ができます。

パラメーター

①3行目 列の変更 ➔ Const 列 As String = “A”

②4行目 開始行番号の変更 ➔ Const 開始行番号 As String = 1

③5行目 最終行番号の変更 ➔ Const 最終行マイナス As String = 0

③は変更する場合だけ-1や-2,-3で最終行の何個上にするかを指定します。

 

次に標準モジュールに記述していきます(*^^)v

とはいっても全てコピペしてあげれば出来上がりです。

 

②標準モジュール

標準モジュールの場所が分からない場合は下記

https://dailyrecords.blog/archives/6207#i-3

 

Debug.Printでイミディエイトウィンドウが表示されない場合は下記

https://dailyrecords.blog/archives/5003#i-5

セルに表示したい場合ははDebug.PrintをRangeやCellsに変更すればセルに表示できます。

 

コピペして上記の黄色の部分だけ変更すればOKです\(^^)/

 

初期値はA列なのでA列に数字を入れていけば合計がイミディエイトウィンドウに表示されます。

 

まとめ

エクセルの形式がそれぞれわからないのでパラメーターを作成しました。

なんとか自動取得できればいいのですがVBAが分からない場合に、もしエラーなどが出た場合は対処はできません。

 

前回も関数で可変自動合計をしましたが、VBAでもChangeイベントを使用すれば作成が可能ということが少しでも理解してもらえたら幸いです。

以上です。