見出し画像

Lesson 5 セルのデータを取り込み、他のセルに自動表示させる

プログラミング経験の全く無いおとうさんにでも簡単にマクロが組める様に!を目指して、前回までに「マクロの記録」を使って簡単な「入出金表を自動で作る」マクロを、前回までに(Lessonの2~4で)一応完成させることができました。

ただここではこれまでに、プログラム自体についてはまだまったくといっていいほど解説をしていません。

なぜならば、既にこれまでに経験していただいた様に、プログラムの難しい意味を理解しなくても「マクロの記録」をうまく活用することで、簡単な表を自動で作るマクロくらいなら誰にでも容易に作れてしまうからです。

ところで、エクセルのマクロによらずプログラムというものは多くの場合、
「入力・処理・出力」という3つの流れで構成されてるということをちょっと覚えておいてください。

エクセルマクロの場合、「マクロの記録」を使えば大抵のことは出来てしまうのですが、ただ残念なことに、記録ができるのはこの3つ内の「出力」の部分だけに限られます。

「入力」即ち、どこかからデータをプログラムに取り込むという行為は、「マクロの記録」では扱うことができません。

なぜかというと、「マクロの記録」という機能では、何か結果に残る操作(例えば、こんにちは、みなさん!と表示させたり、新しいシートを作ったり)をしなければマクロとしては記録できないからです。ただ、データを取り込むという行為は、表示上はエクセルシートになんの変化も起りませんし、そんな操作もできません。

けれど、だからといって心配はいりません!
なぜならば、今みなさんと勉強しているプログラムはエクセルのマクロプログラムであるからです。

ちょっと長く分かりずらい話になってしまいましたので、今回はこの後の本文で具体的な例を挙げて解説していきたいと思います。

今回は「セルA10のデータを取得して、セルB20に表示さる。」というマクロを作ってみることにします。

1⃣
まず、例のごとく「マクロの記録」を使って簡単なマクロを作ってみます。
――――――――――――――――――――――――――――+
1.エクセルを起動させます。(空のエクセルを立ち上げてください)

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

3.次にA10のセルを選択し、とりあえず 123 と打ってみてください。

4.同様にB20のセルを選択し、 456 と打ちます。

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

これでまず、準備段階のマクロのコードが記録できました。

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

2.この画面の左上半分の[+標準モジュール]という所の+の部分
 をクリックすると、そのすぐ下に[Module1]と表示されるので、
 その[Module1]をダブル クリックします。
――――――――――――――――――――――――――――+

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("A10").Select
    ActiveCell.FormulaR1C1 = "123"
    Range("B20").Select
    ActiveCell.FormulaR1C1 = "456"
    Range("B21").Select
End Sub

これが、いま作った準備段階のマクロプログラムのコードというものになります。

3⃣
それでは次に、このプログラムにちょっと手を加えてみたいと思います。
――――――――――――――――――――――――――――+
1.まず、
   ActiveCell.FormulaR1C1 = "123"
 と書いてある行を
   a = ActiveCell.Value
 と書き改めてみてください。

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

2.次に同じ様に、
   ActiveCell.FormulaR1C1 = "456"
 と書いてある行を
   ActiveCell.FormulaR1C1 = a
 と書き改めます。
――――――――――――――――――――――――――――+

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

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("A10").Select
    a = ActiveCell.Value
    Range("B20").Select
    ActiveCell.FormulaR1C1 = a
    Range("B21").Select
End Sub

4⃣
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.まず、エクセルの画面に戻って、「新しいシート」を一つ
 作成します。 下方の[Sheet1]右横の +ボタンを押して、
 [Sheet2]を新規に作成してください。
(既に[Sheet2]がある場合は新規シートのこの作成は不要です。)

2.次に、A10のセルに 987 と打ってみてください。

3.打ち終わったら一度[Enter]キーを押してから、
 [開発]タブの[コード]で [マクロ] をクリック → 「マクロ」
 画面が出るのでそのまま[実行]をクリック。
――――――――――――――――――――――――――――+

実行した結果、B20のセルにも 987 と表示されればOKです。

これで今日の目標の、「セルA10のデータを取得して、セルB20に表示させる。」というマクロが完成しました。

実行前に A10のセルに入力した 987 は、別に何でも、数字でなくても(日本語の文字でも)構いませんので、試しにA10のセルに"こんにちは"と入力して、もう一度マクロを実行してみてください。

今度はB20のセルに"こんにちは"と表示されたと思います。

では、ここで問題です!

今作ったマクロのコードを以下の例題となるように修正してください。

【例題】
  「セルC15のデータを取得して、セルD25に表示させる。」

  ヒント
   2つの例題文のちがう箇所をさがしてみる。
   「セルA10のデータを取得して、セルB20に表示させる。」
   「セルC15のデータを取得して、セルD25に表示させる。」

もうお解かりですよね!?

答えは、
コードの中の A10 を C15 に、B20 を D25 に変えるだけです。

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("C15").Select
    a = ActiveCell.Value
    Range("D25").Select
    ActiveCell.FormulaR1C1 = a
    Range("B21").Select
End Sub

上のプログラムの a というのがプログラム用語で言うところの変数というも
のです。

変数とは即ち、データを入れておく為の箱のような入れ物のことです。その入れ物には必ず名前をつける必要があります。
この場合は、「C15のセルのデータを入れておく為の入れ物が a という名前のついた箱だ」ということになります。

これでもうみなさん、あるセルのデータを取得して、ほかのセルに自動的に表示させるというマクロプログラムが作れるようになりましたよね!

短いプログラムですが、これが今日のはじめに説明したプログラムの3つの流れ「入力・処理・出力」の内の「入力」と「出力」の2つを扱ったマクロプログラムということになるわけです。

今回はこれで終了です。

次回は、これに更に「処理」を加えたマクロプログラムを作っていきます。

【今日のポイント】
「マクロの記録」でも、1行書き換えるだけでセルのデータが読み込める。


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