見出し画像

Lesson 4 簡単な表を自動作成する その3

前回の続きです。表作成マクロが完成します。

まずは、前回途中まで作った表のエクセルのマクロファイル"gogo03.xlsm"を用意してください。

1⃣
最初に、前回までの表の合計欄に1月から12月までの金額の合計が
入るようなマクロを記録してみます。
――――――――――――――――――――――――――――+
1."gogo03.xlsm"を開いてから、(セキュリティ警告が表示された
 場合には、その右横の[コンテンツの有効化]というボタンを
 押してください。)

2.前回、最後にマクロで自動作成した入出金集計表がシート
 [Sheet5]にあると思いますので、[Sheet5]を開いた状態にして

3.[開発]タブの[コード]で [マクロの記録] をクリック →
「マクロの記録」画面が出るので、そのまま[OK]をクリック。

4.B14のセルを選択し、そこに =SUM(B2:B13) と手で打ってくだ
 さい。

 【注意】
   ・必ず全て半角文字で打ってください。
   ・SUMの前の=を忘れずに!

5.打ち終わったら一度[Enter]キーを押してから、同様に、
 C14のセルを選択し、 =SUM(C2:C13) と打ってください。

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

これで、合計金額を表示させるためのマクロが記録できました。

2⃣
次に、今回はまず実行してみる前に、もう一つちょっとマクロの
記録をさせたいと思います。
――――――――――――――――――――――――――――+
1.使用するシートは現在開いているシート[Sheet5]のままでいい
 ですので、[開発]タブの[コード]で [マクロの記録] を
 クリック → 「マクロの記録」画面が出るので、そのまま
 [OK]をクリック。

2.次に、画面下部のの[ワークシート挿入]タブ または[新しい
 シート] +ボタンをクリックして、また新たなシート[Sheet6]
 を作ります。

3.シート[Sheet6]ができたら、
 [開発]タブの[コード]で [■記録終了] をクリックして、
 マクロの記録を終了させます。
――――――――――――――――――――――――――――+

これで、新たなシートを作るためのマクロが記録できました。

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

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

(※もし、[Module3]が表示されていない場合は、セーブをせずに
  一旦エクセルを閉じてから再び開いて、1)からやり直して
  ください。)
――――――――――――――――――――――――――――+

これが先ほどの1)並びに、2)で作った「合計の金額を表示させるマクロ」と
「新たなシートを作るマクロ」のプログラムです。

Sub Macro3()
'
' Macro3 Macro
'

'
    Range("B14").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-12]C:R[-1]C)"
    Range("C14").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-12]C:R[-1]C)"
    Range("C15").Select
End Sub
Sub Macro4()
'
' Macro4 Macro
'

'
    Sheets.Add After:=Sheets(Sheets.Count)
End Sub

コメント行('で始まる行)を除けばごく短いプログラムですので、もうなんとなくこの意味がお分かりになる方もいらっしゃると思いますが、例のごとく 「今、このプログラムの意味を理解する必要は全くありません!」ので、全く分からないという方でも全然心配はいりません。

【補足説明】
Excelバージョンによって、この最後から2行目の
 Sheets.Add After:=Sheets(Sheets.Count)
が、
 Sheets.Add After:=ActiveSheet
となる場合がありますが、そのままで問題はありません。
(以下このバージョンによる違いは無視します。)

4⃣
それでは次に、前回と同じ方法でプログラムにちょっと書き込み
をしてみたいと思います。
――――――――――――――――――――――――――――+
1.画面の左上半分の[Module1]の方をダブルクリックして、
 以前作ったちょっと長めのマクロプログラムを表示させます。

2.そのマクロプログラムをスクロールして一番最後の行をみて
 ください。

   End With
   Call Macro2
 End Sub

 最後の3行はこの様に書かれていると思います。
 覚えていますか?下から2番目の行は、先週皆さんが書き加
 えた Call文 というものでしたね。

3.下記の様に、最後の行「 End Sub 」と最後から2番目の行
 「 Call Macro2 」の間に、「 call macro3 」と手で打って
 1行追加してください。
 
 ※前回も言いましたが、このプログラム(VBA)の書き方
  では、大文字と小文字の区別はありませんので、大文字と
  小文字は気にしないで打ち込んで構いません。(打ってか
  ら別の行を触ると自動的に変わる仕組みです。)
  ただし、全角と半角は区別されますので必ず半角で打って
  ください。

   End With
   Call Macro2
   Call Macro3
 End Sub
――――――――――――――――――――――――――――+

この意味は、前回お話したのと全く同じですので、「"Macro3"というマクロ
プログラムの処理を"Macro1"から呼び出して実行させる」という意味になり
ます。

この場合の"Macro3"の処理とは、先ほど1)で作成した「合計金額を表示させ
るマクロ」のことです。

5⃣
次にもう1か所、同じ方法でプログラムにちょっと書き込みを
します。
――――――――――――――――――――――――――――+
1.上と同じ[Module1]のマクロプログラムをスクロールして、
 今度は一番最初の行をみてください。

 Sub Macro1()
 '
 ' Macro1 Macro
 '
 
 '
 ActiveCell.FormulaR1C1 = "月度"

 最初の行はこの様に書かれていると思いますので、次の様に
 「 ActiveCell.FormulaR1C1 = "月度" 」と書かれている行
 の上に「 call macro4 」と手で打って1行追加してください。

 Sub Macro1()
 '
 ' Macro1 Macro
 '
 
 '
  Call Macro4
 ActiveCell.FormulaR1C1 = "月度"
――――――――――――――――――――――――――――+

この場合の Macro4 の処理というのは、2)で作成した「新たなシートを作る
マクロ」のことです。

先ほどの Macro3 とは、マクロを呼び出す位置が違うということになります。

新たなシートというのは、表を書き込む前に作っておかなければならないも
のですから、必ず実行するマクロの最初の部分で呼び出す必要があります。

6⃣
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.今回は実行前に開いておくシートは、これまでとは違って
 [Sheet6]でも[Sheet1]でも何でも構いません。
 [開発]タブの[コード]で [マクロ] をクリック → 「マクロ」
 画面が出るのでそのまま[実行]をクリック。
――――――――――――――――――――――――――――+

これで新しいシート[Sheet7]に、先ほど作ったのと同じ表が自動的にできた
ことと思います。

念のために、この表の毎月の入金欄や出金欄に金額を適当に入れてみて、合計金額が正しく表示されることを確認してみてください。

もし、うまく合計金額が表示されないという方はちょっと途中で順番など
間違えたりして記録されたマクロに違いが出てしまったためではないかと
思われますので、セーブをせずに"gogo03"を一旦終了させもう一度、1)から
やり直してみてください。

今回はこれで終了です。

今日作った入出金の表は今後もまた使用することがありますので、必ず保存しておいてください。(今日作ったBookは以降"gogo04.xlsm"と称しますので、なるべくこの名前で、ファイルの種類は必ず[Excelマクロ有効ブック]でセーブしておいてください。)

【今日のポイント】
マクロを呼び出すCall文の挿入する位置を考える。(先頭か?後方か?)


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