Lesson 76 --- 「リクエスト特集」第3弾 ---
テーマ:入力欄から一ヶ月の入庫集計表を作るマクロ(その1)
◆リクエスト紹介
「リクエスト特集」第3弾の2つ目となる今回は、sumiさんからいただいた
下記のリクエストをご紹介します。
>ある品物40種など多数の一ヶ月の仕入れ集計を作りたいと思っています。
>
>何日にある品物が何個入庫した、とわかりやすいように、
>たとえば行に日付、列に品目を入れて一ヶ月31日分の一覧表を作ります。
>(A欄)
>
>同じシート内に、日付、品種、数量を入れる欄をそれぞれ作ります。
>(B欄)
>
>B欄に入力すれば、自動的にA欄に入力されるようにしたいのですが
>できますか?
sumiさん、リクエストありがとうございます。
今回のリクエストは、これだけですとあまり意味のないマクロのように思える
かも知れませんが(直接A欄へ入力していけばよいだけなので)、これをちょ
っと拡張していけば応用範囲は実に広く、例えば在庫管理やExcelデータ
ベースの様なことにも使えますので、今回のリクエストは、とてもタメになる
内容になるだろうと思っています。
◆今日の講座
今回のリクエストでは、下記の例のような表を想定したマクロを作っていくこ
ととします。(例はお寿司屋さんのネタの仕入表です。)
H19年6月
日付 品目 数量(kg)
27 かつお 10 ←入力欄(B欄)
品目/日付 1 2 3 ・・・
まぐろ 25 20 23
かつお 10 9 12 ←一覧表(A欄)
はまち 12 10 14
・
・
・
1)
それではまず、いつもの通りマクロの記録を使ってその基となるプログラム
作りから始めます。
――――――――――――――――――――――――――――+
1.エクセルを起動させます。(空のエクセルを立ち上げてください)
2.まず、マクロの記録を開始します。
[ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
→ マクロの記録画面が出るのでそのまま[OK]をクリック。
3.A3のセルを選択し、とりあえず 111 と打ってください。
4.同様にB3のセルを選択し、 222 と打ってください。
5.同様にC3のセルを選択し、 333 と打ってください。
6.同様にB6のセルを選択し、 444 と打ってください。
7.打ち終わったら一度[Enter]キーを押してから、
[ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、マクロの記録
を終了させます。(小っさな画面の■をクリックしても同じです)
――――――――――――――――――――――――――――+
2)
それでは、いま作ったプログラムの中身をのぞいてみましょう。
――――――――――――――――――――――――――――+
1.[ツール(T)] → [マクロ(M)] → [Visual Basic Editor(V)]
すると、もう見なれたマクロプログラム用の画面が表示されたと思います。
2.この画面の左上半分の[+標準モジュール]という所の+の部分をクリック
すると、そのすぐ下に[Module1]と表示されるので、その[Module1]をダブル
クリックします。
――――――――――――――――――――――――――――+
++++++++++++++++++++++++++++―
Sub Macro1()
'
Range("A3").Select
ActiveCell.FormulaR1C1 = "111"
Range("B3").Select
ActiveCell.FormulaR1C1 = "222"
Range("C3").Select
ActiveCell.FormulaR1C1 = "333"
Range("B6").Select
ActiveCell.FormulaR1C1 = "444"
Range("B7").Select
End Sub
++++++++++++++++++++++++++++―
いま、自動記録して作成したこのプログラムは、仮の文字(数字の111とか222
とか)を読み書きをするセルの目印とするためのものです。
3)
それでは、このプログラムにちょっと手を加えていきます。
――――――――――――――――――――――――――――+
1.まず、
ActiveCell.FormulaR1C1 = "111"
と書いてある行を
a = ActiveCell.Value
と書き改めてください。
2.続けて、
ActiveCell.FormulaR1C1 = "222"
と書いてある行を
b = ActiveCell.Value
と書き改めます。
3.最後に、
ActiveCell.FormulaR1C1 = "333"
と書いてある行を
c = ActiveCell.Value
と書き改めます。
――――――――――――――――――――――――――――+
修正した後のプログラムはつぎの様になります。
++++++++++++++++++++++++++++―
Sub Macro1()
'
Range("A3").Select
a = ActiveCell.Value
Range("B3").Select
b = ActiveCell.Value
Range("C3").Select
c = ActiveCell.Value
Range("B6").Select
ActiveCell.FormulaR1C1 = "444"
Range("B7").Select
End Sub
++++++++++++++++++++++++++++―
いま行なった修正は、書き込む行を読み込む行へと変更しただけのものです。
いま修正したプログラムに出てきた変数のa,b,cというのがおのおの、日付、
品目、数量の各入力データを格納するための変数にあたります。
4)
更にもう少し、プログラムに手を加えていきます。
――――――――――――――――――――――――――――+
1.まず、
ActiveCell.FormulaR1C1 = "444"
と書いてある行の上に、次の1行を追加します。
d = ActiveCell.Value
2.次に、
ActiveCell.FormulaR1C1 = "444"
と書いてある行を
ActiveCell.FormulaR1C1 = d + c
と書き改めます。
――――――――――――――――――――――――――――+
修正した後のプログラムはつぎの様になります。
++++++++++++++++++++++++++++―
Sub Macro1()
'
Range("A3").Select
a = ActiveCell.Value
Range("B3").Select
b = ActiveCell.Value
Range("C3").Select
c = ActiveCell.Value
Range("B6").Select
d = ActiveCell.Value
ActiveCell.FormulaR1C1 = d + c
Range("B7").Select
End Sub
++++++++++++++++++++++++++++―
いま行なった修正は、現在の数量に入力した数量を足して、同じセル位置に書
き戻すといった意味になります。
5)
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、
2.実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
そのまま[実行]をクリック。
――――――――――――――――――――――――――――+
実行した結果、B6のセルが 777 と表示されればOKです。
( 333 + 444 = 777 の意味です。)
6)
確認のため、続けてもう一度実行してみます。
――――――――――――――――――――――――――――+
1.現在開いているシートのままで、
いま 333 となっているC3のセルの値に -77 と打ち直してください。
2.打ち終わったら一度[Enter]キーを押してから、実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
そのまま[実行]をクリック。
――――――――――――――――――――――――――――+
実行した結果、B6のセルが 700 と表示されればOKです。
( 777 - 77 = 700 の意味です。)
至って簡単ではありますが、実はこれが在庫管理などのプログラムではよく見
られる「現在数に増減の数を加えて数量を変更していくやり方の基本」とも言
えるものです。
今回はこれで終了です。
今日作ったマクロプログラムは次回もこの続きでまた使いますので、大切に
保管しておいてください。(ファイル名 "gogo76.xls" )
無料メルマガの登録は、▼こちらから▼
「Go! Go! エクセルマクロをはじめよう!」
エクセル書籍
いろいろと勉強させてもらおうと思いますので、今後ともよろしくお願いします。