●今までプログラミングなんかに触れたことが無くて
「今更そんなの使いこなせるわけない」と思っている方
●小学校でプログラミングが必修科目になり、
子どもに「ここ分からないから教えて~」と言われても
「無理!!」と言うしかなくて困ったお父さん・お母さん
そんなプログラミング全くの初心者に向けて、
「こうやったら自動で動くソフト(Excelマクロ)が作れるんだ!」
というのを理解していただくように、
ゼロからソフトを作っていく過程を紹介していきたいと思います。
Windowsのパソコンがあれば大抵標準装備されているExcelを使って紹介しますので、
この投稿のシリーズを最後まで読んでいただければ、
また、投稿を読みながら実際に一緒にソフトを作っていっていただければ、
「自分で実際にソフトを作ることができて、プログラミングに少し自信がついた!」
と思ってもらえるかと思いますので、是非とも一緒に手を動かしてみてください。
【本記事の目標】
Excelシートに入力した値を、所定の場所に自動コピーさせよう
前回からの続きです。前回投稿と併せてご確認ください。
1.金額を入力して勘定科目を選択したら、リストに自動で記入する。
2.記入したリストを自動的に集計する。
3.集計した結果から、今月使った割合が多い項目が何かわかるようにグラフ化する。
4.翌月の内容を記入する際は、自動で新しい白紙のリストを作成して記入していく。
5.毎月の集計結果を集めて、毎月の家計がどういう変化をしているかがわかるグラフを作る。
6.毎月の集計結果をさらに集計し、その年使った割合が多い項目が何かわかるようにグラフ化。
Step2 選択された勘定科目を確認する
勘定科目を決める
次に、勘定科目を選択できる部分を作って、勘定科目も変数に入れていきます。
まずはどんな勘定科目を作っておくかですが、あまり煩雑にしすぎるとマクロを作ることが大変になるだけでなく、せっかく作った家計簿マクロも使わなくなってしまいます。
(レシートを見ながら「これは食費?生活費?娯楽費?」と悩んでいるうちに面倒になってしまって、数ページしか書いてない家計簿をいくつ作ったか。。。)
なので、追々、各々の状況に合わせてカスタマイズしていくとして、
まずは一番基本的な勘定科目を用意していきます。
一番基本的な勘定科目ですと、
- 【収入】か【支出】
- 支出の中で、【固定費】か【変動費】
この4つが選べれば家計簿の機能としては十分な役割をします。
なので、この4つを選べる部分を作ります。
少し脱線しますが、今回設定する勘定科目はそれぞれ
■固定費:毎月ある程度決まった額がかかる費用
(例:家賃、携帯通信料、電気代、水道代、サブスク)
■変動費:月によって金額が変わる費用、固定費以外
(例:食費、衣服代、外食費、治療費、娯楽費)
というものです。
個人的はこの2項目だけで家計の管理は十分だと思っています。
毎月の収支を見て赤字になっていた時、ついつい日々使っているお買い物を節約してしまいますが、それを何年も続けるのが大変だと思います。
じゃあどうするか、というときに検討するのが【固定費】です。
こちらは必ず毎月かかる費用ですが、逆に言うとこれを減らすことができれば、何もしなくても毎月の家計が楽になります。
もし毎月の収支を見たとき、【固定費】の割合があまりに高いのであれば、いくら【変動費】の方で贅沢をしているな~と感じたとしても、一番最初に見直すべきなのは【固定費】です。
【固定費】を見直して、これ以上は難しいと思えるところまで減らして、それから【変動費】を見直せば、そんなに切り詰めていると感じていなかったとしても、家計には絶大な効果が出ます。
そこを確認するためにも、【固定費】と【変動費】に分けて一度家計簿をつけるのが大事です。
勘定科目に入力規制をかける
まずはExcelシートに入力する場所を作ります。
今回は、”D1”セルに【収入】か【支出】を、”E1”セルに【固定費】か【変動費】を入力できるようにします。
まずは下記のようにシート上に入力欄を作ります。
この”D1”セルと”E1”セルに手入力してもいいのですが、
文字の打ち間違い等があると後々集計するときに困るので、
決まった文字しか入力できないようにしておきます。
”D1”セルを選択した状態で、上のタブの
『データ』⇒『データ入力規制』⇒『データ入力規制(V)』
を選択します。
するとデータ入力規制の新しいウィンドウが立ち上がるので、
「入力値の種類(A)」を【リスト】にし、
「元の値(S)」に【収入,支出】
と入力して『OK』をクリックします。
すると”D1”セルにリストが表示されるようになります。
同じ流れで、”E1”セルも【固定費】、【変動費】だけが入力できるようにしておきます。
これでシート側の準備はOKです。
では次にコード側を作っていきます。
入力コードを記載する
『開発』タブの『Visual Basic』からコード入力の画面を開き、
前回入力したモジュール(KamokuInput)⇒ プロシージャ(KamokuInput_1)を開きます。
前回と同じように、
- 変数を定義して
- データ形式を指定して
- 所定の場所のデータを変数に入力する
という手順で進めます。今回は一気に入力してしまいます。
注意点としては、今回入力するデータが文字列ですので、変数のデータ形式は【String】にします。
これで勘定科目が変数に入りました。
これでも問題はないと思いますが、ただこのままですと、
シートに入力されている内容がそのまま変数に入ってしまいます。
それの何が問題なのかというと、
【支出】には【固定費】と【変動費】が必要ですが、
【収入】には【固定費】や【変動費】の区分けが不要なのに、区分けができてしまう状態になっています。
【収入】を選んだら”E1”セルを空欄にする
というルールを守ればOKですが、忘れたり間違える可能性が大いにあるので、
【収入】を選択した場合は、
”E1”セルに【固定費】や【変動費】が入力されていたとしても、
『Kamoku1』の変数には空欄が入力されるようにしておきたいです。
If文を使って入力内容を切り替え
このような場合には If文 を使います。
使い方は下記の通り。
If 判別式 Then
(判別式が正しいときの動き)
Else
(判別式が間違いのときの動き)
End if
判別式の書き方として代表的なものは下記のとおりです。
判別式 | 内容 | 詳細 |
A=B | 等しい | AとBが全く同じかどうかを判別。数字でも文字列でも可。 |
A<>B | 等しくない | AとBが違うかどうかを判別。数字でも文字列でも可。 |
A>B | AはBより大きい | Aが大きいかを判別。A=Bの場合はFalse。 |
A<B | AはBより小さい | Aが小さいかを判別。A=Bの場合はFalse。 |
A>=B | AはB以上 | Aが大きいかを判別。A=Bの場合はTrue。 |
A<=B | AはB以下 | Aが小さいかを判別。A=Bの場合はTrue。 |
判別式が正しいときは【True】
間違っているときは【False】
になります。
【True】の場合はThen以降の動きを実行し、
Else~End ifの間の動きは実行しません。
逆に【False】の場合はElse以降の動きを実行し、
Then~Elseの間の動きは実行しません。
ここで【True】や【False】というのは、Boolean値というデータ形式です。
文字列(String)や数字(Double)は色々な値がありますが、
Boolean値というのはこの【True】と【False】の2つのデータしか持つことができません。
それだけ聞くと非常に使い勝手が悪そうですが、If文等の何かを判別するときには非常に重宝する(というか頻繁に出てくる)データ形式です。
今回の場合、
”D1”セルが【収入】だった場合は勘定科目を空欄にして、
”D1”セルが【支出】だった場合は勘定科目に”E1”に記載内容を入力する
という分岐をするので、下記のようになります。
これで各変数にデータが入力されました。
あとはExcelシートに表を作っておいて、このデータを表に転記していきます。
次の記事へ
コメント