Mutable_Yunの業務改善ブログ

業務改善や生産性向上のブログです。自動化の手段として、VBAやRPAの勉強に役立つ解説をしています。

Excel VBA入門 本当のど初心者向け①とりあえず何か書いてみる

<段落構成の見直しと内容の追加・修正2019/11/17>

今回は本当のプログラミング初心者業務効率化をExcel VBAで始める方法とその第一歩を踏み出すまでについて解説します。

業務効率化ならExcel VBAから始めるのが最短 - Mutable_Yunの業務改善ブログで解説した通り、エクセルを多く利用している職場ではExcel VBAで業務改善を進めていくのが最短です。

この記事はプログラミング自体を経験したことがない、本当の初心者向けに書いています。
レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。

目次

初めてのプログラミング言語の一歩目からのステップ

記事の対象の読者

この記事はマクロと言う言葉が聞いたことがあるという位の本当の初心者を対象にしています。私が会社で初めてプログラミングに触れる方々に教えてきた中での失敗経験を踏まえ、つまづき易いポイントと回避方法を解説していきます。ちなみにつまづきポイントは克服では無く
回避して、最短距離で身に付けていきましょう。

一方、「なんで分からないの??」となってしまう指導の立場にある方にも役立つ面があるかと思います。それでは始めましょう!

結論を先に言います。この記事は下記の狙いです。

この記事の狙い
この記事の狙い

このブログには中級以上向けの記事がたくさんありますので、上の、5までたどり着けば、そこからは実務を通して実力を向上させていくことができます。

ここでは序盤の山場の、初級者レベルに到達するまでを目指します。

初めは本を最後まで通読しなくて良い

初めは入門書を通読する必要はありません。知識を入れても使わないと身につかないからです。少ない情報から入り、何回もアウトプットを繰り返して定着させる。そのうち、やり方が分からないところが出てくるので、それを本なり、ネットなりで調べる事で、知識を増やして行けば良いです。

なお、私はVBAは初めてプログラミングを学ぶのに最適な言語だと思っています。Pythonなども初めてのプログラミング言語として人気ですが、とっつきやすさが桁違いです。理由はエンジニアの言うプログラミング言語としての簡単さでは無く、既にあなた自身がエクセルを触ったことがあるからです。すでにエクセルにはどんな機能があるのかを知っているので、ゼロからのスタートではないんです。

しかも、VBAではエクセルそのものを少し触るだけで、プログラミングを書く準備ができます。というか、すでにできているプログラミングの為の画面を呼び出すだけです。これは非常に大きいです。

この段落をまとめると下記のようになります。

  1. 一冊目の入門本は今は最後まで読まなくていい。
  2. VBAは初めてのプログラミング言語としてPythonよりさらに向いている

とりあえず何かプログラムを書く為の準備をする(超簡単です。一つずつ進めましょう)

それでは一番簡単な命令を実行してみましょう。まず、プログラミングを記述するための画面を出現させます。

まず、何も無い状態からエクセルを立ち上げます。空のエクセルブックが表示された状態にして下さい。

ファイル⇒オプション⇒リボンのユーザー設定 で現れる「エクセルのオプション」画面の右ノ窓にある「開発」のチェックボックスをクリック

「エクセルのオプション」画面
「エクセルのオプション」画面

右下のOKを押して完了。

開発タブの表示されたリボン部分
開発タブの表示されたリボン部分

このように「開発」のタブが表示されました。開発という響きがプログラミングらしくて、嬉しいですね!


Visual Basicアイコンをクリック
Visual Basicアイコンをクリック

早速、新しくできた開発タブをクリックしてみましょう。すると、左にVisual Basicのアイコンがありますので、コチラをクリックします。

すると、エディタが開きます。エディタとはプログラミングを書くのに必要な機能がそろった場所のことです。

VBEの画面。初期設定は黒では無く、白色
VBEの画面。初期設定は黒では無く、白色

私は背景が黒の方が見やすいので、設定を変えているので、皆さんとは違った画面に見えると思います。皆さんは、初めてであれば、右の画面は白色になっているはずです。この一番大きいところが、これからプログラムのコードを書くところです。

次に一番簡単なコードを書いてみましょう。

Subの後にスペースを開けて「初めてのプログラミング」と書いてみましょう。

Sub 初めてのプログラミング()
    
End Sub

すると「初めてのプログラミング」の文字のあとに半角の()とEnd Subと言う文字が自動で挿入されます。

このSubがここからプログラムのコードが始まりますよ、という合図です。End Subは・・・もうお分かりですね。ここでプログラムのコードが終わりますよ、と言う意味です。「初めてのプログラミング」の部分はこのプログラムの名前です。VBAではこのひとかたまりのプログラムのコードのことを「プロシージャ」と言います。

()の意味は今は気にする必要はありません。

とりあえず書いた簡単なプログラムを実行してみる

一番簡単な命令を書いてみましょう。下を書き写してみて下さい。コピペは禁止です!手で書き写しましょう。

Sub 初めてのプログラミング()

    Cells(1, 1) = "こんにちは"
    
End Sub

書けたら、カーソルがSubからEnd Subの中にある状態で、リボンの中にある小さな右向きの緑色の三角ボタンを押します。このボタンはプログラムを実行する、と言う意味です。

リボンの中の△ボタンを押す
リボンの中の△ボタンを押す

はい。これで、実行できました。「??」ですね。エクセルブックのSheet1というシートに戻ってみましょう。

A1のセルに「こんにちは」と表示された
A1のセルに「こんにちは」と表示された

A1に「こんにちは」と表示されました。おめでとうございます。初プログラミング完了です!

簡単な命令を少しアレンジしてみる

大丈夫です。ちゃんと解説します。
ちょっと、エクセルブックの表示を変えてみましょう。

「エクセルのオプション」画面2
「エクセルのオプション」画面2

エクセルシートの縦横が両方とも数字の表記になりました。これまで普通にエクセルを表として使っていた時はA1セルやB5セルのように呼んでいましたが、これからは数字で呼ぶことにします。これは後々便利だから、と覚えておけば十分です。

Cells(1, 1) = "こんにちは"  のところに注目して下さい。Cellsの()の中に数字が2つ記入されています。これが、セルの番地を示しています。試しに下記に変更して実行してみて下さい。

Sub 初めてのプログラミング()

    Cells(2, 5) = "おはよう"
    
End Sub

先ほどのA1セルの「こんにちは」を消す作業はしていませんから、そのまま残ったまま、2行目の5列目のセルに「おはよう」と書き込まれました。

つまり、下記が分かりました。

初文法
初文法

実行結果
実行結果

おめでとうございます。初文法習得です。”文字列”と書いてあるのは、「こんにちは」とか「おはよう」のことです。「文字列とは」と検索をするといきなり難しい説明がいっぱい出てきてしまったり、混乱の元になったりすることがいろいろあるので、今はやめておいた方がいいと思います。文字列は例えば「こんにちは」、これで十分です。

ここで、すぐに次に行く人は、本を通読して終わりになりやすい人!「挫折してないけど身についてないよ?」ってなります!【重要】。初心者の罠です。

プログラミングの最大の上達のコツはアウトプットを増やしまくることです。さっき写経でセルに文字列を書き込みました。これはインプットです。今度は、先ほどのコードを見ないで、別のいろいろな場所のセルにいろいろな文字列を書き込みまくりましょう。目標は最低10回。

見ながらでは無く、Sub~End Subまで、カンペキに。

*プログラミングは完璧主義だと挫折しやすいです。でも、今の段階は何をカンペキに身に付けて何を飛ばしていいのか分からないはず。だから、私が「今は分からなくていい」と言うところは飛ばして、「カンペキに!」と言ったところは完璧にしましょう。このように現時点で分かっておくべき事と後で良いことを分けて解説してくれることはめちゃくちゃ、ありがたいことです【断言】。本には「ここは今は分からなくていい」とか「ここはカンペキに」とは余り書いていません。(書いてあるのもあります。)指導の立場にある方は、飛ばす所としっかり教えるところのメリハリに気をつけると良いと思います。私が初めて人に教えたときはSubプロシジャについてくる()の意味やそもそもSubプロシジャとは、と言った解説をして大失敗しました。

質問ご意見はお気軽にコメント欄にどうぞ!