1424930_6867_3

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

連載:

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

【連載】

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

screenshot_79

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

screenshot_80

 

様々な変数を学んだマーク。
今回は、もっと便利な「VBA関数」を学ぶことに。

[前回までのあらすじ]

Excel仕事に苦労していたカフェの店長マークは、突然あらわれたクマに、エクセルを自動化する「マクロ(VBA)」を教わることになった。様々な基礎を学んだ上で、プログラミングの重要項目「変数」についても学んだマーク。
今回は、もっと便利な「VBA関数」について学ぶことに…?

background

 

マーク
かなりVBAプログラミングが分かってきたぞぅ!変数っていう大切な概念も勉強できたし!

 

クマリオ
ふむ。君にしてはよくここまで付いてくることができたな。

 

マーク
なんか褒められてるような、けなされてるような…!

ノア
(店長、がんばって!)

 

新しい仲間、「VBA関数」!

クマリオ
突然だが…今回登場する、新しいキミの仲間だ。「VBA関数」という。

2018-06-28_06h56_06

マーク
お!?この存在感…!何だか、頼りになりそうだ!

 

クマリオ
うむ。VBA関数はとても便利な機能なのだ。ちょうどExcelの(一般的な)「関数」とよく似ている。

普段のExcel操作で、こういうものを見たことが無いかな?

▼普段Excelで使っている、
いわゆる「関数」

2018-06-27_16h26_28

 

マーク
あぁ、これは合計を求めるための…え~と、SUM関数?

 

クマリオ
そうだ。なかなかやるじゃないか。そう、普段Excelを使っていてもこういう「関数」という機能があるな?

それと似ていて、VBAにも、VBAだけの関数があるわけだ。

これらを区別して、一般の関数のことを「シート関数」、VBAの関数のことを「VBA関数」と分けて呼ぶことがあるから覚えておくといい。

 

マーク
へぇぇ、そうだったのか。知らなかった!

 

[ポイント]

Excelの関数には2種類ある。

  • 「シート関数」…Excelのシートで使われる一般の関数のこと
  • VBA関数」…マクロ(VBA)に備わっている関数のこと

VBAだけで利用することができる関数を「VBA関数」と呼ぶということを覚えておこう!

 

 

 

(0)今回の実習内容

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

  • (1)まずはMsgBox関数で理解しよう!
  • (2)MsgBox関数にも、いろんな引数がある!
  • (3)文字列を置き換える「Replace関数」を使ってみよう!
  • (4)日時に加算する「DateAdd関数」を使ってみよう!

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

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

screenshot_78
section2-end-file_2.xlsm

(1)まずはMsgBox関数で理解しよう!

VBA関数の中で最も親しみやすいのは、おなじみの「MsgBox関数」です。

2018-06-27_16h40_47

例えば以下のように使用します。

MsgBox “こんにちは”

このように記述して実行すると、「こんにちは」というボックスを出力してくれます。

2018-06-28_07h02_17

 

2018-06-27_16h40_58

このように、関数名の後に半角スペース(空白)を空けて「”こんにちは”」のようなデータを渡すとき、このデータを「引数」といいます。(「引数」という呼び方も、一般のExcelの関数(シート関数)と同じですね。)

 

(2)MsgBox関数にも、いろんな引数がある!

ここまでの講座では省略していましたが、MsgBox関数にも、いろんな引数があります。

2018-06-27_16h40_16

例えば、上記の例を記述して実行してみます。

MsgBox “天気は晴れですか?”, vbYesNoCancel + vbQuestion

MsgBox “本当にいいですか?”, vbOKCancel + vbCritical

▼このようにVBAで記述して実行してみましょう

2018-06-27_16h48_58

 

[結果はこうなる!]

 

MsgBox “天気は晴れですか?”, vbYesNoCancel + vbQuestion

の結果

2018-06-27_16h49_32

 

MsgBox “本当にいいですか?”, vbOKCancel + vbCritical

の結果

2018-06-27_16h49_37

 

このように、MsgBox関数は、文字列のあと「,」と入力し、様々な引数を+で加えることで、様々なオプションを指定することができるのです。

2018-06-27_16h52_31

 

マーク
え!?
MsgBox関数だけでこんなにたくさんの種類の引数があるなんて知らなかった!
クマリオ
うむ。MsgBox関数一つだけでも奥が深いだろう?
この表を参考に、いろんな引数を試してみるといい。
ただ、ここでは引数をすべて暗記するのが目的ではないので、なにか困ったときに調べれば使えるように原理を理解しておくことが大切だ。

 

(3)文字列を置き換える「Replace関数」を使ってみよう!

「Replace関数」は、ある対象から、特定の文字列をほかの文字列に置き換えて返す関数です。

2018-06-27_16h57_32

 

[記述して実行してみよう!]

このように記述してみましょう。

2018-06-28_07h27_10

 

[実行するとこうなる]

①まず、「様」という文字列を含むセルを選択します。

2018-06-27_17h00_03

②マクロを実行します。

2018-06-28_07h07_19

③すると、「様」が自動的に「さん」に書き換えられました!

2018-06-27_17h07_27

 

マーク
勝手に書き換えてくれるなんて、親切なVBA関数だなぁ!

 

クマリオ
そう、これがReplace関数だ。「Replace」という英単語は「置き換える」という意味。つまりこのVBA関数は、特定の文字列を探して別の文字列に置き換えてくれるVBA関数なのだ。

 

 

 

(4)日時に加算する「DateAdd関数」を使ってみよう!

DateAdd関数は、日時のデータを加算することができる関数です。

2018-06-28_07h30_50

 

[記述して実行してみよう!]

2018-06-28_07h42_48

 

[実行するとこうなる!]

①まずは、日時のデータが入力されたセルを選択しておきます。

2018-06-28_07h33_12

②次に、VBAを記述してマクロを実行します。

2018-06-28_07h34_19

日付データが1か月加算されて、「1月1日」が「2月1日」になりました

2018-06-28_07h34_51

 

マーク
日付を書き換えてくれるのはありがたいなぁ!
クマリオ
うむ。Excelのシート関数にも「EDATE関数」という同じような機能があるが、別のセルに関数を入力しなければならず、元データが書き換えられない。だが、VBAのDateAdd関数ならデータそのものを書きかえてくれるので、より直接的だ。

 

今回はここまで!

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

 

 

次回からは、VBAを利用して便利なマクロを作る方法について解説していきます。

 

 

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

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

screenshot_79

 

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

screenshot_80

 

 

連載:

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

【連載】