見出し画像

Lesson 8 「前年対比」を計算して自動表示する

まずは、以前作成した入出金表のエクセルファイル"gogo04.xlsm"を用意して
ください。

今回のマクロ作成の命題は、

 「前年のシートの合計金額と今年のシートの合計金額を取得して、
  その下に前年対比のパーセンテージを表示させたい。」

です。

1⃣
まずは、"gogo04"の続きに新たに入出金集計表のシートを作ってみます。
――――――――――――――――――――――――――――+
1."gogo04"を開きます。(上の方に黄色いセキュリティ警告の
 帯が表示された場合には、その右横の[コンテンツの有効化]
 ボタンを押してください。)

2."gogo04"には、既に第4回までに作ったシート[Sheet1]~
 [Sheet7]があると思いますので確認してください。

 ※もし、[Sheet1]~[Sheet7]以外のシートも作ってしまわれた
  という方は、[Sheet1]~[Sheet7]以外のよけいなシートは
  すべて手で削除し、開いているエクセルを一旦閉じて終了
  させ、再び開いてから次へ進んでください。(こうしないと、
  新たにできたシートの番号がずれてしまい、以後の説明が
  判りづらくなってしまいますので。)

3.開いておくシートは何でも構いませんので、
 [開発]タブの[コード]で [マクロ] をクリック → 「マクロ」
 画面が出るのでそのまま(Macro1が選ばれた状態で)[実行]
 をクリック。
――――――――――――――――――――――――――――+

これで新しいシート[Sheet8]に、自動的に以前に作った入出金集計表が作成
されたことと思います。

これが、この講座の第2回~第4回までの内容で作成したマクロプログラムで自動作成ができるようにした入出金表です。思い出していただけましたか?

2⃣
それでは次に、先に示した今回の命題に沿って、前回までやった
のと同じように「マクロの記録」を使って簡単な「準備段階の
マクロ」を作ってみます。
――――――――――――――――――――――――――――+
1.先ほど作った[Sheet8]を開いた状態で、
 [開発]タブの[コード]で [マクロの記録] をクリック →
「マクロの記録」画面が出るので、そのまま[OK]をクリック。

2.次に、シート[Sheet7]を開き、B14のセルに 111 と打ちます。
 (この際B14のセルにはすでに数式が入っていると思いますが、
  気にせずに 111 と上書きして構いません。)

3.続けて、同様にC14のセルに 222 と打ちます。

4.次に、シート[Sheet8]を開き、B14のセルに 333 と打ちます。

5.続けて、同様にC14のセルに 444 と打ちます。

6.次に、同じ[Sheet8]のB15のセルに 555 と打ちます。

7.続けて、同様にC15のセルに 666 と打ちます。

8.打ち終わったら一度[Enter]キーを押してから、
 [開発]タブの[コード]で [■記録終了] をクリックして、
 マクロの記録を終了させます。
――――――――――――――――――――――――――――+

これでとりあえずの「準備段階のマクロ」が記録できました。

3⃣
次に、今回もまず実行してみる前に、ちょっとマクロプログラム
の中身をのぞいてみることにします。
――――――――――――――――――――――――――――+
1.[開発]タブの[コード]で [Visual Basic]をクリック。
 すると、マクロプログラムの画面が表示されたと思います。

2.この画面の左上半分の[-標準モジュール]という所のすぐ下に
  [Module1]と[Module2]と[Module3]と[Module4]
 の4つが表示されていると思いますが、その中のいちばん下
 [Module4]をダブルクリックしてみてください。
――――――――――――――――――――――――――――+

Sub Macro5()
'
' Macro5 Macro
'

'
    Sheets("Sheet7").Select
    Range("B14").Select
    ActiveCell.FormulaR1C1 = "111"
    Range("C14").Select
    ActiveCell.FormulaR1C1 = "222"
    Range("C15").Select
    Sheets("Sheet8").Select
    Range("B14").Select
    ActiveCell.FormulaR1C1 = "333"
    Range("C14").Select
    ActiveCell.FormulaR1C1 = "444"
    Range("B15").Select
    ActiveCell.FormulaR1C1 = "555"
    Range("C15").Select
    ActiveCell.FormulaR1C1 = "666"
    Range("C16").Select
End Sub

これがいま作った「準備段階のマクロ」のプログラムということになります。(多少の違いがあっても気にする必要はありません。)

前回、前々回の復習になりますが、ここでのポイントはシートの移動も一緒
に「マクロの記録」で記録させた。というところにあります。
マクロを記録する際に、最初に打ちこむシートが[Sheet7]だからといって、
[Sheet7]を開いた状態で「マクロの記録」を開始してしまわないことです。

あえて別のシートを開いた状態からマクロの記録を開始しすることで、
マクロを実行する際に、どのシートを開いた状態からでも確実にターゲットとするシートのセルからデータを取得できるようにしています。

4⃣
それでは次に、このプログラムにちょっと手を加えてみたいと
思います。(前回、前々回もこれと似たようなことはしました
ので、ちょっと思いだしていただければ簡単かと思います。)
――――――――――――――――――――――――――――+
1.まず、
   ActiveCell.FormulaR1C1 = "111"
 と書いてある行を
   a1 = ActiveCell.Value
 と書き改めてみてください。

(大文字と小文字の区別は気にする必要はありませんが必ず全部半角文字で打ってください。以下も同様です。
打ち間違えを防ぐ為に、コピー&ペーストを使うのが良いと思います。)

2.同様に、
   ActiveCell.FormulaR1C1 = "222"
 と書いてある行を
   b1 = ActiveCell.Value
 と書き改めます。

3.同様に、
   ActiveCell.FormulaR1C1 = "333"
 と書いてある行を
   a2 = ActiveCell.Value
 と書き改めます。

4.さらに、
   ActiveCell.FormulaR1C1 = "444"
 と書いてある行を
   b2 = ActiveCell.Value
 と書き改めます。

5.次に、
   ActiveCell.FormulaR1C1 = "555"
 と書いてある行を
   ActiveCell.FormulaR1C1 = a2 / a1
 と書き改めます。

6.最後もう一つ、
   ActiveCell.FormulaR1C1 = "666"
 と書いてある行を
   ActiveCell.FormulaR1C1 = b2 / b1
 と書き改めます。
――――――――――――――――――――――――――――+

「 a2 / a1 」や「 b2 / b1 」の / というのは割り算(÷)を意味する記号
です。

ちょっと長くはなりますが、やっていることは先週までに何度もやったこと
と変わりませんので、こうしたちょっとした書き変えはもうみなさん手慣れ
たものだろう(?)と思います。

書き変えた後のプログラムはつぎの様になります。

Sub Macro5()
'
' Macro5 Macro
'

'
    Sheets("Sheet7").Select
    Range("B14").Select
    a1 = ActiveCell.Value
    Range("C14").Select
    b1 = ActiveCell.Value
    Range("C15").Select
    Sheets("Sheet8").Select
    Range("B14").Select
    a2 = ActiveCell.Value
    Range("C14").Select
    b2 = ActiveCell.Value
    Range("B15").Select
    ActiveCell.FormulaR1C1 = a2 / a1
    Range("C15").Select
    ActiveCell.FormulaR1C1 = b2 / b1
    Range("C16").Select
End Sub

5⃣
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、実行する前に開いておくシートは
 何でも構いませんので、

 [開発]タブの[コード]で [マクロ] をクリック → 「マクロ」
 画面 が出るので、今度はマクロ名にいま書き変えた[Macro5]
(いちばん下)を選択してから[実行]をクリックします。
――――――――――――――――――――――――――――+

そうすると、[Sheet8]の入金額の合計の下(セルB15)に
333 から 111 を割り算した値である 3 が、出金額の合計の下(セルC15)に
444 から 222 を割り算した値である 2 が表示されればOKということになり
ます。

今回はここまでで終了です。

入出金表に「前年対比」を自動表示させるマクロ作りはまだ途中ですが、また次回、この続きを行なっていきます。
今日作った入出金の表は次回もこの続きでまた使いますので、必ず「Excel
マクロ有効ブック(*.xlsm)」で(ファイル名:"gogo08.xlsm")保存して置く
ようにしてください。


この記事が気に入ったらサポートをしてみませんか?