「エクセルを、自動化せよ」

1424930_6867_3

連載:

エクセルで始める!VBAプログラミング入門
(Excelの作業を自動化できる、プログラミング超入門講座)

(第2回)マクロの中身を解明!初めてのVBAに挑戦!

【連載】

▼この連載は、ベネッセUdemyにて発売している動画コースの内容から一部を記事にしているものです。
動画でもっと分かりやすく勉強したい方は、こちらもご覧下さい。
(この連載限定で●%割引となります)

screenshot_79

 

クマに教わり、「マクロの記録」ができたマーク。
さっそく調子に乗ってきたが・・・?

[前回までのあらすじ]

カフェの店長マークは、突然あらわれたクマに、エクセルを自動化する「マクロ」を教わることに。
まずはボタンをクリックするだけでマクロを作成できる「マクロの記録」という便利な機能を使い、マクロを作成することに成功した。さっそく調子に乗ってきたマークだが・・・?

background

マーク
「ふぅ〜。便利なボタンができたなぁ。 これで僕もマクロマスターだな!」
熊リオ
…愚か者!まだまだこれからだ!」

「確かにマクロはできた。 だが、マクロの中身がどうなってるか まだ理解していないだろう?

マーク
「えっ、マクロの中身?」

 

macro_person

 

熊リオ
「いいか?マクロとは命令を実行する機能。その命令の中身は「VBA」という 言語で書かれているんだったな?」
マーク
「はっ!そういえば!」

 

macro_person2

 

熊リオ
「そう。マクロをマスターする秘訣は、 そのVBAを理解することにある。 VBAを理解すれば、自由自在にマクロを 操れるようになるわけだ。」
マーク
「なるほど!

では、教えてもらおうか。

マクロの天才、この私に!

熊リオ
(…調子に乗ってきたな、こいつ。)

 

(0)今回の実習内容

今回の実習内容はこちらです。

slide3all

(1)実習ファイルをダウンロードしてみよう!

パソコンで以下のファイルをダウンロードして、実習を行うことができます。

screenshot_78
section1_goal.xlsx

(2)マクロの編集画面(VBE)を開いてみよう

slide3-1

マクロの中身(VBA)を編集する画面を、「VBE」(Visual Basic Editor)と呼びます。

マーク
なぜ「Visual Basic Editor」なんて ややこしい名前なの?

もともとExcelとは関係がなく、プログラマーさんがソフトウェアなどを作るためのプログラミング言語として「Visual Basic」というものがありました。その後、このVisual Basicを、ExcelやWordなどのOfficeソフトを自動化するために利用されたものが「Visual Basic for Application(略してVBA)」なのです。

つまり、Visual Basicを編集する(Edit)ための画面だから、「Visual Basic Editor」というわけですね。

[やってみよう]

①「開発」タブの「Visual Basic」ボタンをクリックして下さい。

※ショートカットキーとして、[Alt]+[F11]キーでも同じ操作ができます。便利なので覚えておきましょう。

screenshot_123

②このような画面が起動します。これがVBEです。

screenshot_124

 

 

 

(3)マクロは1つ1つの部品(モジュール)からできている

まずはここを見てみましょう。「VBAProject」「標準モジュール」などと書かれていています。

screenshot_125

マーク
???

プロジェクトとか、モジュールって何なの?

slide3-2

マクロを構成している全体像が「プロジェクト」、その基本単位が「モジュール」という意味です。

  • 自動車=プロジェクト
  • 1つ1つの部品=モジュール

と考えると、理解しやすいかと思います。

色んなモジュールがありますが、マクロを作る入門者としては、とりあえず「標準モジュール」を覚えておけば構いません。一般的には、この「標準モジュール」というものを作ったり編集していきます。

(4)命令の中身は「Sub」~「End Sub」に書いてある

では、「マクロの具体的な命令の内容はどこに書いてあるか?」ということですが、
このような場所に書いてあります。

screenshot_126

 

マーク
何だこれ~!

全然意味がわからない・・・

 

今は意味がわからなくても大丈夫です。安心して下さい。

これは、前回の「マクロの記録」によって作られたVBAの内容ですので、最初からたくさんの命令が書かれています。

ですが、いま把握しておくのは、最初と最後の1行だけです。

slide3-3

「Sub プロシージャ名()」から始まって、「End Sub」で終わる。

その間に書いてある内容が、具体的なマクロの命令内容ということですね。

 

マーク
ふむふむ。

プロシージャって何?

 

「プロシージャ」というのは、(procedure;手順)つまり一連の処理のことですね。

[例えば…]

  • Sub 書式を変える()
  • Sub 一覧をクリアする()
  • Sub 並べ替える()

といったように、一連の処理の1つ1つが「プロシージャ」ということです。

 

(5)具体的な命令を見てみよう!

それでは、具体的な1つの命令に着目してみましょう。

たとえば、この1文です。

screenshot_127

 

「Selection.Font.Bold = True」とはどういう意味でしょうか。

slide3-x1

ここは、英語っぽく理解していくと理解できます。

  • 「Selection」…選択しているもの
  • 「Font」…フォント
  • 「Bold」…太字

つまり、左辺は

選択しているセルの、フォントの、太字を…」という意味になります。

 

そして、「true」とは「真」を意味する英語ですが、

関数やVBAにおいては

  • true = 真(”Yes”のこと)
  • false = 偽(”No”のこと)

を意味します。

 

まとめると、

「選択しているセルの、フォントの、太字を = 真(Yes)にする」

という意味になりますね。

 

何となくでも意味が分かったでしょうか。

そう、VBAは、英語にとても似ているのです。

 

マーク
へぇ~。

で、「プロパティ」っていう言葉があったけど、それは何?

 

slide3-4

 

さて、上記で「プロパティ」という言葉がありましたが、これもVBAを理解するための用語ですね。

マクロにおいては、1つのものをオブジェクトと呼びます。そして、オブジェクトが持っている数値のことを1つ1つ「プロパティ」と呼びます。

[例えば]

Kuma(クマ)というオブジェクト

  • Size…大きさを意味するプロパティ
  • Weight…重さを意味するプロパティ
  • Speed…速さを意味するプロパティ

上記のように、1つのオブジェクトには色んなプロパティがあるということですね。

 

マーク
あれ?

でも、さっきのVBAにはオブジェクト名なんて書かれてなかったじゃない??

 

そう、先ほどの文例では、実はオブジェクト名を省略して書いてあったのです

slide3-x

先ほどの「Selection.Font.Bold」のようによく使われるプロパティの場合、その持ち主であるオブジェクト(Application)は省略しても可とされています。

ですので、通常このようなプロパティを使う場合は、オブジェクト名を省略して記述することが多いですね。

 

(6)マクロの一部を書き換えてみよう!

プロパティに値を挿入するときは、

プロパティ名 = 数値

のように記述します。

slide3-5

VBA以外のプログラミング言語にもよくある表現方法なのですが、

左のもの = 右のもの と記述した場合、
左のもの 右のもの この向きに値を挿入する

という意味を指します。

 

[やってみよう]

では、VBAの一文を書き換えてみましょう。
「true」という記述を「false」に書き換えます。

slide3-6

 

①「Selection.Font.Bold = True 」の右辺の「True」を削除して、「False」に書き換えます。

screenshot_128

 

②左上の緑色のボタンか、ショートカットキー[Alt]+[F11]で、画面をExcelに切り替えます。

screenshot_129

 

③いずれかのセルをクリックして選択し、「一発で書式を変更」ボタンでマクロを実行します。

screenshot_130

 

④マクロの実行後、フォントを見てみましょう。太字にならなくなりました!

screenshot_131

 

これは、あなたがVBAを書き換えたことによりマクロの命令が変更されたからです。

 

  • Selection.Font.Bold = True  フォントを太字に変更する
  • Selection.Font.Bold = False フォントを太字でない状態にする

 

 

今回はここまで!

いかがだったでしょうか?

 

今回は以上です。

次回からは、さらにVBAの基本につい詳しく解説していきます!

 

この連載のような内容を動画のコースでわかりやすく解説しています。

(ベネッセUdemyにて動画コースが●%オフ)

screenshot_79

 

【好評につき、続編が出ました】
[脱・入門編]請求書を1クリックで作るマクロを作ろう

screenshot_80

 

[新着]こちらは5月いっぱいまで無料!
お子さんのプログラミング学習に興味のある方は

ゲーム好きな子供を熱くさせる!
親子で学べる、プログラミング教育 超入門コース

<<5月いっぱい無料です>>

screenshot_81

 

========

連載:

エクセルで始める!VBAプログラミング入門
(Excelの作業を自動化できる、プログラミング超入門講座)

【連載】