ご家庭で使える家計簿アプリの作成方法を通して、
超初心者向けに、ExcelVBAマクロについて解説をしてきました。
超初心者向け、ということで少し回りくどい言い回しが多くなってしまい、
最終的にその1~その6までの6部構成になってしまいました。
6つに分けて解説してきた影響で、
●最終的な全体の完成形がわかりにくい!
●いろんな関数やコマンドを説明していたが、後で見返すときにどこにあるか分からない!
となるかと思いましたので、
その1~その6までのダイジェスト版を作りました。
これを見ていただければ、
・その6まで終わった後の最終完成形の家計簿アプリのイメージ
・各関数・コマンドの解説部分へのワープ
が可能になるかと思います。
その1~その6までを読まれた方も、これから読んでいただける方にも、
どちらにも有意義なものになるかと思いますので、是非とも読んでみてください。
【本記事の目標】
その1~その6で作った家計簿アプリ(最終版)の全体像を確認しよう
どの記事でどんな関数・コマンドを解説していたかを知ろう
完成品の構成
ExcelVBAの各モジュールのコード一覧
完成品のExcelファイルは初期段階では3つのシートでできています。
- 入力:日々の収支を入力していくシート。家計簿入力のメインシート。
- 月ごとの推移:入力シートで入力・複製された毎月の集計結果をまとめたシート。
- 年ごとの推移:月ごとの推移のシートから、各年ごとの集計結果をまとめたシート。
それぞれの画面は下記のような形で作ってます。
(わかりやすいように適当なデータを入れた画像になっています)
また、完成品のExcelVBAマクロのモジュールは下記のような構成になっています。
モジュールは、今回は下記の4つを作っています。
- KamokuInput:入力シートの『リストに追加』のボタンで起動するマクロを記載。
- SheetCopyCode:入力シートの『シートの複製・初期化』のボタンで起動するマクロを記載。
- JisakuFunc_SUM:集計するための関数を自作したコード。『リストに追加』のマクロを起動した際に呼び出して使用している。
- SheetFunc_SUM:WorksheetFunctionを使った集計方法のコード。例として説明するために記載したが、このアプリでは使っていない。
それぞれのコードを以下に書きだします。
モジュール名:KamokuInput、プロシージャ名:KamokuInput_1
Option Explicit
Sub KamokuInput_1()
'リストに追加をクリック
Dim Kingaku1 As Double
Kingaku1 = ThisWorkbook.ActiveSheet.Range("B1").Value
Dim Syushi1 As String
Dim Kamoku1 As String
Syushi1 = ThisWorkbook.ActiveSheet.Range("D1").Value
If Syushi1 = "収入" Then
Kamoku1 = ""
Else
Kamoku1 = ThisWorkbook.ActiveSheet.Range("E1").Value
End If
Dim EndRow1 As Integer
With ThisWorkbook.ActiveSheet
EndRow1 = .Cells(.Rows.Count, 1).End(xlUp).Row
EndRow1 = EndRow1 + 1
.Cells(EndRow1, 1).Value = Syushi1
.Cells(EndRow1, 2).Value = Kamoku1
If Syushi1 = "収入" Then
.Cells(EndRow1, 3).Value = Kingaku1
Else
.Cells(EndRow1, 4).Value = Kingaku1
End If
End With
Call Jisaku_SUM
End Sub
モジュール名:SheetCopyCode、プロシージャ名:SheetCopy1
Option Explicit
Sub SheetCopy1()
'シートの複製
Dim YearInput As Integer
Dim MonthInput As Integer
With ThisWorkbook.Sheets("入力")
YearInput = .Range("I1").Value
MonthInput = .Range("K1").Value
End With
ThisWorkbook.Sheets("入力").Copy After:=ThisWorkbook.Sheets("入力")
ActiveSheet.Name = YearInput & "年" & MonthInput & "月"
ThisWorkbook.Sheets("入力").Range("A4:D10000").ClearContents
ThisWorkbook.ActiveSheet.Shapes("正方形/長方形 5").Delete
'=============毎月データの集計用コード(参照関数の入力ver) ここから=================
Dim EndRow1 As Integer
With ThisWorkbook
'『月ごとの推移』シートの最終行を確認
EndRow1 = .Sheets("月ごとの推移").Cells(.Sheets("月ごとの推移").Rows.Count, 3).End(xlUp).Row
EndRow1 = EndRow1 + 1
'=============行挿入のコード ここから=================
With .Sheets("月ごとの推移")
.Range(.Cells(EndRow1, 3), .Cells(EndRow1, 9)).Insert Shift:=xlDown
End With
'=============行挿入のコード ここまで=================
'データを貼り付けていく
.Sheets("月ごとの推移").Cells(EndRow1, 3).Value = "='" & YearInput & "年" & MonthInput & "月'!I1" '年
.Sheets("月ごとの推移").Cells(EndRow1, 4).Value = "='" & YearInput & "年" & MonthInput & "月'!K1" '月
.Sheets("月ごとの推移").Cells(EndRow1, 5).Value = YearInput & "年" & MonthInput & "月" '年/月
.Sheets("月ごとの推移").Cells(EndRow1, 6).Value = "='" & YearInput & "年" & MonthInput & "月'!G5" '収入合計
.Sheets("月ごとの推移").Cells(EndRow1, 7).Value = "='" & YearInput & "年" & MonthInput & "月'!G6" '支出合計
.Sheets("月ごとの推移").Cells(EndRow1, 8).Value = "='" & YearInput & "年" & MonthInput & "月'!G8" '固定費
.Sheets("月ごとの推移").Cells(EndRow1, 9).Value = "='" & YearInput & "年" & MonthInput & "月'!G9" '変動費
End With
'=============毎月データの集計用コード(参照関数の入力ver) ここまで=================
End Sub
モジュール名:JisakuFunc_SUM、プロシージャ名:Jisaku_SUM
Option Explicit
Sub Jisaku_SUM()
'自作の関数を使った集計
Dim SyunyuSyukei3 As Double
Dim ShisyutsuSyukei3 As Double
Dim i As Integer
Dim EndRow2 As Integer
Dim Koteihi As Double
Dim Hendouhi As Double
With ThisWorkbook.ActiveSheet
EndRow2 = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 4 To EndRow2
If IsError(.Cells(i, 3).Value) Then
Else
SyunyuSyukei3 = SyunyuSyukei3 + .Cells(i, 3).Value
ShisyutsuSyukei3 = ShisyutsuSyukei3 + .Cells(i, 4).Value
If .Cells(i, 2).Value = "固定費" Then
Koteihi = Koteihi + .Cells(i, 4).Value
End If
If .Cells(i, 2).Value = "変動費" Then
Hendouhi = Hendouhi + .Cells(i, 4).Value
End If
End If
Next i
.Range("G5") = SyunyuSyukei3
.Range("G6") = ShisyutsuSyukei3
.Range("G8") = Koteihi
.Range("G9") = Hendouhi
End With
End Sub
モジュール名:SheetFunc_SUM、プロシージャ名:SheetFunction_SUM
Option Explicit
Sub SheetFunction_SUM()
'WorksheetFunctionを使った集計
Dim SyunyuSyukei2 As Double
Dim ShisyutsuSyukei2 As Double
With ThisWorkbook.Sheets("入力")
SyunyuSyukei2 = WorksheetFunction.Sum(.Range("C4:C100000"))
ShisyutsuSyukei2 = WorksheetFunction.Sum(.Range("D4:D100000"))
.Range("G7") = SyunyuSyukei2
.Range("H7") = ShisyutsuSyukei2
End With
End Sub
その1~その6で記載している内容
その1:Excelシートの値を、所定の場所にコピーする
その1では、【金額を入力して勘定科目を選択したら、リストに自動で記入する。】ためのマクロを説明しています。
いわゆる、日々の家計簿の入力の部分ですね。
また、一番初歩の初歩ということで、モジュールやプロシージャの準備から説明しています。
説明の流れとしては、
- プロシージャを準備する
- 入力された金額を確認する
- 選択された勘定科目を確認する
- リストの中で一番最後に記入されている場所を探す
- 一番最後の記入されている場所から、1つ次の場所を確認する
- 一番最後の1つ次の場所に、入力された金額を記入する
- 一番最後の1つ次の場所に、選択された勘定科目を記入する
という流れで説明しています。
また、家計簿アプリ作成のための説明以外にも、
今後のマクロ作成やExcelの便利機能、その他のおすすめ知識についても説明しています。
具体的な内容を箇条書きしておきます。
- 変数の定義(Dim)
- マクロでの『=』(イコール)の意味
- 家計簿の分類方法のオススメ
- セルの入力規制
- If文の使い方
- Boolean値とは
- マクロでのセルの指定方法
- RangeとCellの違い
- マクロ起動ボタンの作り方
その2:いろいろな集計方法を知ろう
その2では、【記入したリストを自動的に集計する。】ためのマクロを説明しています。
集計方法としては『Excel関数を使った集計方法』と『マクロを使った集計方法』があり、それぞれについて説明しています。
今回の家計簿アプリでは最終的に『マクロを使った集計方法』を採用しています。
どちらもメリット・デメリットがあるので、場合によって使い分けが必要です。
(メリット・デメリットについても記載しています)
具体的な内容について箇条書きしておきます。
- Excel関数とは、SUM関数とは
- Excelの『テーブル』とは
- マクロで使える「WorksheetFunction」とは
- For文の使い方
- 「WorksheetFunction」でエラーが出る場合
- プロシージャを呼び出す『Call』について
- Excel関数のSUMIF関数について
- 日本語入力時の『”』(ダブルクォーテーションマーク)について
- セルの『絶対参照』と『相対参照』について
- For文とIf文の組み合わせ
WordPressのfunctions.phpを編集する前は、編集前に必ずバックアップを取って保存してください。もし編集後、エラーが出るようでしたら、バックアップファイルを元に復元してください。
その3:グラフの簡単な作り方、操作方法
その3では【集計した結果から、今月使った割合が多い項目が何かわかるようにグラフ化する。】ためのマクロを説明しています。
ただし、マクロでのグラフ作成をゼロから作ろうと思うと非常に難易度が高いので、マクロを使わなくてもできることを説明しています。
具体的な内容について箇条書きしておきます。
- グラフ作成の難易度
- グラフのデコレーション方法
- 図形・グラフを移動させる際の「Alt」キー操作
- 円グラフの作り方
その4:シートの複製・操作について
その4では【翌月の内容を記入する際は、自動で新しい白紙のリストを作成して記入していく。】ためのマクロを説明しています。
シートを複製するための方法だけでなく、シート複製した際に注意すべき点についても説明しています。
具体的な内容について箇条書きしておきます。
- セルに表示される値の表示方法の変更(書式設定)
- セルの「年」「月」といった日付について
- シートの複製方法について
- シート名の変更方法について
- 文字列の繋ぎ方、「&」の使い方
- データの削除、「Clear」の使い方
- シート複製時の注意点と課題
- マクロでシート名を指定する方法とその課題
- ActiveSheetの使い方
- 【置換】機能の使い方
- マクロでの図形の操作、『Shape』とは
その5:複数のシートからのデータ抽出方法
その5では【毎月の集計結果を集めて、毎月の家計の変化がわかるグラフを作る。】ためのマクロを説明しています。
複製された色々なシートのデータを1つのシートにまとめていくための方法を解説しています。
具体的な内容について箇条書きしておきます。
- データの直接貼り付けとリンク入力
- データ直接貼り付けのいろいろな方法
- 「PasteSpecial」について
- 「Applicaiton.CutCopyMode」について
- セルから別シートを参照する方法
- グラフのデータ領域の自動拡張方法
その6:少し複雑な集計関数を、マクロから入力させる
その6では【毎月の集計結果をさらに集計し、その年使った割合が多い項目がわかるようにグラフ化。】するためのマクロを説明しています。
ここでは真新しいことはほとんどなく、これまでのその1~5で説明した内容を駆使すればできるようになっています。
なので、まずは自分で一度作ってみた後に、その6を見てもらった方が良いかもしれません。
完成!
その1~その6を読んでいただければ、ひとまず家計簿アプリ 完成です!!
ただこの家計簿アプリは、とりあえず最低限の機能しか持たせていないので、
より使いやすくしようと思うと、これをさらに自分なりに
・デコレーション
・ブラッシュアップ
・カスタマイズ
していく必要があります。
自分が一番使いやすい形を作り上げて、
自分の自分のための自分専用の家計簿アプリを作っていってください。
いずれ、1つの参考として、この家計簿アプリの「デコレーション」「ブラッシュアップ」「カスタマイズ」の方法についての記事も書いていこうと思います。
ではまた。
コメント