家計簿アプリ

ExcelVBAで家計簿アプリを作ろう その1-1

家計簿アプリ
スポンサーリンク

●今までプログラミングなんかに触れたことが無くて
  「今更そんなの使いこなせるわけない」と思っている方
●小学校でプログラミングが必修科目になり、
  子どもに「ここ分からないから教えて~」と言われても
 「無理!!」と言うしかなくて困ったお父さん・お母さん

そんなプログラミング全くの初心者に向けて
 「こうやったら自動で動くソフト(Excelマクロ)が作れるんだ!」
というのを理解していただくように、
ゼロからソフトを作っていく過程を紹介していきたいと思います。

Windowsのパソコンがあれば大抵標準装備されているExcelを使って紹介しますので、
この投稿のシリーズを最後まで読んでいただければ、
また、投稿を読みながら実際に一緒にソフトを作っていっていただければ、
 「自分で実際にソフトを作ることができて、プログラミングに少し自信がついた!
と思ってもらえるかと思いますので、是非とも一緒に手を動かしてみてください。

【本記事の目標】

Excelシートに入力した値を所定の場所に自動コピーさせよう

それでは、家計簿アプリでの1つ目の動きのプログラミングを始めていきます。

  1.金額を入力して勘定科目を選択したら、リストに自動で記入する。
  2.記入したリストを自動的に集計する。
  3.集計した結果から、今月使った割合が多い項目が何かわかるようにグラフ化する。
  4.翌月の内容を記入する際は、自動で新しい白紙のリストを作成して記入していく。
  5.毎月の集計結果を集めて、毎月の家計がどういう変化をしているかがわかるグラフを作る。
  6.毎月の集計結果をさらに集計し、その年使った割合が多い項目が何かわかるようにグラフ化。

ExcelVBAでプログラムを書くためには事前準備が必要です。
プログラムを書くための事前準備については、こちらの記事をご確認ください。
(以降の記事ではこの事前準備が完了した前提で説明していきます。)

Step0 プロシージャを準備する

まず、コードを書くためExcelVBAにモジュールとプロシージャを用意します。
今回はモジュール名「KamokuInput」プロシージャ「KamokuInput_1」にしておきます。

このとき、「Option Explicit」を忘れずに。
これの意味は「Excel VBAの環境構築」をご参考下さい。

プロシージャが準備できたら、実際に具体的なコードを書いていきます。
具体的な動きは下記の通り。上から順に作っていきます

  1. 入力された金額を確認する
  2. 選択された勘定科目を確認する
  3. リストの中で一番最後に記入されている場所を探す
  4. 一番最後の記入されている場所から、1つ次の場所を確認する
  5. 一番最後の1つ次の場所に、入力された金額を記入する
  6. 一番最後の1つ次の場所に、選択された勘定科目を確認する



Step1 入力された金額を確認する

まずはExcelシート上に金額を入力する場所を作ります。
今回は「入力」というシートを作り、そこの”B1”セルに金額入力欄を作ります。

シート名の部分をダブルクリックすると、シート名が変更できるので「入力」というシート名にします。

このシートの”B1”セルを金額入力欄にします。わかりやすいように装飾しておきましょう。
(装飾はお好みでOKです。)

ここの欄に入力した数値をマクロ内に取り込みます。

では「KamokuInput_1」のプロシージャに戻ります。
まずは、取り込んだ数値を入れておくための「変数」を定義します。
この変数というのは、データを入れておくための箱だと思ってください。
ただの箱だと、中に何が入っているのか、何用に用意した箱なのかが分からなくなるので、
箱にラベルを貼ります。この作業が「変数の定義」と呼ばれるものです。

変数の定義は

Dim 変数名 as 型名

と記入します。この型名というのは、この変数にどういったデータが入るのか、を指定します。
型名としてよく使う例としては下記があります。

型名データ種類
String文字列
Integer数値(整数のみ)
Double数値(少数含む)
SheetsExcelのシート
RangeExcelシートの中のセル領域

上3つは比較的イメージがしやすいと思います。下2つはオブジェクトと呼ばれるもので、これも変数として定義することが可能です。ただ、初めのうちは「そんなのも定義できるんだ~」と思ってもらうだけでOKです。必要なのは「型名」を指定することで、変数に入るデータを指定できる、という点です。

 



今回の場合、金額を入力しますので、数値データを入れられる変数を定義します。
変数名はひとまず「Kingaku1」にします。

次にこの変数の中に金額のデータを入力していきます。
金額が入力されているのは、このExcelファイルの、「入力」というシートの、”B1”という領域、に入っているデータ、でしたね。ですので、書き方としては下記のようになります。

Kingaku1 = ThisWorkbook.Sheets(“入力”).Range(“B2”).Value

これで”B1”セルに入力した数値が「Kingaku1」に入力されます。
試しに動かしてみましょう。一旦、”B1”セルに好きな数値を入力して、プロシージャ上で「F8」を押してください。そうすると、プロシージャ上に黄色いハンチングが出てきます。

これは「ステップ イン」と言われるデバッグの方法です。

デバッグというのはプログラムが正常に動くかどうかを確認する確認作業のことです。

「F8」をクリックしていくと、この黄色い領域が少しずつ下に下がっていきます。
黄色い領域が通過した部分のコードだけが実行されていきます。
なので、1行ずつの動きを確認できるのです。
今回は「End Sub」のところまで黄色い領域を持って行きましょう。
その状態でマウスを「Kingaku1」のところに持って行くと、Kingaku1に入っているデータを確認することができます。

 



今回は”B1”セルに「500」を入力していたので、「Kingaku1」に500というデータが入力されています。これでセルのデータを変数に入力することができました。

変数にデータを入力する場合、イコール(=)の右左が変わると動きが変わるので注意が必要です。
イコールを書いた場合は、基本的には『右のデータを左に上書きコピーする』と覚えておいて下さい。
例えば、変数Aに3という数字が、変数Bに10という数字が入力されていた時、
 A=B
とすると、AにもBにも10という数字が入力され、
 B=A
とすると、AにもBにも3という数字が入力されます。

「基本的には」と書いたのは、データ入力の場合は上記の通りですが、イコール(=)はIf文等の判別式での記号にも使用し、その場合は普段のイメージと同じ『右と左が同じ』ということを判別します。一旦は、そういう使い方もある、という認識だけでOKです。

次の記事へ

コメント

タイトルとURLをコピーしました