エクセルマクロ備忘録

マクロ学習備忘録

変わりゆく数 〜変数定義〜

おそらくVBAを習得するにあたって、最初の難関がこの変数定義ですかね。


【説明:変数とは】

変数とは、そのまんま、変わる数です。

舐めてんのか、とか言わないでください。今から説明します。

例えば、A1セルに"こんにちは"と入力する時を想像してください。

この時、入力対象のセルは、何行目でしょうか。

当然答えは1行目ですよね。では、C5セルの時はどうでしょう。これも簡単、5行目ですよね。

というように、その場面場面に応じて変動するものの事を変数と言います。先の例で言えば、変数とはつまり行番号の事ですね。列番号にも同じことが言えます。

日常生活の中で言えば、時間とか、日付とかもそうですね。とにかく変数とは、


1つに固定されていることのないもの


の事です。

ここで、「数値」ではなく「もの」と書いたのは、実は結構重要です。

例えば、今までの記事では"VBA日記"という文字列を特定のセルに入力してきましたが、

仕事をする上で、"VBA日記"と入力する事しかない

ということは、100%ありえませんよね。壊れかけのラジオだってもう少しバリエーションあります。

そう、つまり、変数という名前に惑わされがちですが、文字列などの数値以外ものも変数なのです。

なので、先の例で言えば"こんにちは"という文字列も、場面場面で内容を変えたい時は変数なのです。



【説明:変数定義】

VBA上で変数を使えるようにするには、変数を宣言(定義)します。

以下は、"入力文字"という名前の変数を宣言するマクロです。


Dim 入力文字 

入力文字 = "VBA日記"


Dim が、今から変数を使いますよーという合図になります。その後に変数の名前を入れます。変数の名前は、好きに決められます。ただし、一部の記号は使えません。変数名がダメな時はエラーになるので、その時は名前を調整してください。

で、変数に何かを代入する時は、=を使います。

また、代入する値を変えたい場合は、再度変数に別の値を代入すれば上書きされます。


Dim 入力文字 

入力文字 = "VBA日記"

~入力文字が"VBA日記"の間の処理~

入力文字 = "こんにちは"

~入力文字が"こんにちは"の間の処理~


こんな具合ですね。

変数宣言は、使用する変数につき一回でいいので、Dimは複数書かなくていいです。というより、Dimを何回も書くとエクセルから「同じ変数もう聞いたよ?忘れたの?バカなの?」とツッコミが入りますので気をつけましょう。


実は変数定義には型指定とか色々奥深い側面がありますが、今回は割愛。


【実践】

今回は少しだけ役に立つかもしれない実践。

以下の場面を想定します。

  1. 毎日業務日誌を書かなければならない
  2. 業務日誌には「記入日付」と「○/○の業務報告をします」という定型文を入力しなければならない

毎日の業務日誌、面倒ですねぇ。しかも日付と定型文を手入力……Why Japanese people!!ですね。

マクロを実行するだけで、日付と定型文が入力されたら、楽ですね。

というわけでこんなマクロを組んでみました。


sub 日付、定型文入力()

Dim hiduke , bun          '日付と文

hiduke = "=TODAY()"   


Range("A2") = hiduke         '日付を入力するセル番地を指定

bun = Range("A2").Value & "の業務報告をします"

Range("B3") = bun


end sub

A2セルが日付を入力するセル、B3セルが定型文のセルと想定してます。

.Valueの部分は今まで紹介していませんが、まあそのうち。今はそういうもんと思ってください。


大して複雑な処理をするわけではありませんが、皆さん秒数を想像してください。

  1. 今日の日付を確認(3秒)
  2. A2セルに日付を入力(1秒)
  3. B3セルに日付を含めた定型文を入力(6秒)

PC操作に慣れててもこんなもんじゃないですかね。当然、10秒くらい大したことないよ、と思うことでしょう。しかし、それが毎日です。週5勤務×4週間×12ヶ月で計算すると、1年で40分削減になります。ではこれが、11分かかるならどうでしょうか。5分の作業ならと考えてみてください。

業務の改善は、この10秒の積み重ねです。


初めはこう行った単純かつ細かいことから、徐々に複雑で時間のかかる操作を自動化・高速化していくことを考えていくことになります。


というわけで、今回はここまで。