「エクセルを、自動化せよ」
連載:
エクセルで始める!VBAプログラミング入門
(Excelの作業を自動化できる、プログラミング超入門講座)【連載】
- 第0回 エクセルを自動化する、マクロVBAプログラミングとは?
- 第1回 超親切な機能「マクロの記録」でマクロを始めよう!
- 第2回 マクロの中身を解明!初めてのVBAに挑戦
- 第3回 基本のVBAを記述してみよう!
- 第4回 続・基本のVBAを記述してみよう!
- 第5回 「変数」入門!プログラミングの必修項目
- 第6回 もっと変数を使おう!String型とVariant型(この記事)
- 第7回 もっと便利な「VBA関数」を使おう!
▼この連載は、ベネッセUdemyにて発売している動画コースの内容から一部を記事にしているものです。
動画でもっと分かりやすく勉強したい方は、こちらもご覧下さい。
(この連載限定で●%割引となります)
【好評につき、続編が出ました】
[脱・入門編]請求書を1クリックで作るマクロを作ろう
プログラミングの必修項目である「変数」について知ったマーク。
今回は、さらに色んな変数に迫る!?
[前回までのあらすじ]
Excel仕事に苦労していたカフェの店長マークは、突然あらわれたクマに、エクセルを自動化する「マクロ(VBA)」を教わることになった。様々な基礎を学んだ上で、変数に入門したマーク。
今回は、さらに文字列(String)型やVariant型の使い方を知ることに…?
もう、変数なしでVBAは語れないよね~(得意顔)
前回話したが、変数には色んな「型」があると言ったことを覚えてるかな?
すぐに調子に乗るから大事なことを聞き逃すのだ。
こういう代表例があったなぁ。確か、
・Integer型 …整数のデータを出し入れできる
・String型 …文字列のデータを出し入れできる
・Variant型 …どんなデータ型も出し入れできる
(その他は今は省略)
だったっけ?
(0)今回の実習内容
今回の実習内容はこちらです。
- (1)文字列を出し入れできる「String型」の変数を使ってみよう!
- (2)文字列型(String)は、数値計算には使えないので注意!
- (3)文字列を連結したい場合は「&」を使うのが一般的
- (4)何でも入るよVariant(ヴァリアント)型!
- (5)何でも使えるからこそ注意したい!Variant型
実習ファイルをダウンロードしてみよう!
パソコンで以下のファイルをダウンロードして、実習を行うことができます。
(1)文字列を出し入れできる「String型」の変数を使ってみよう!
今回は、文字列を出し入れすることができる「String型」の変数を使ってみます。
[記述してみよう!]
次のような「Sama」プロシージャを記述してみましょう。
[実行するとこうなる]
①Excelの表で[会社名]のセルを選択しておき、
②VBEから「Sama()」を実行すると…
③自動的に「様」がついたデータに書き換えられました!
これは便利かもしれないなぁ。
全部のデータを手で入力しちゃった後で変更していくのって、手作業だと結構面倒くさいしねぇ。
もちろんVBAを使わなくてもExcel関数の「CONCATENATE関数」などを使えば、同じようなことはできる。
だが、もっとVBAを応用した場合、例えばある条件を満たすデータだけに「様」をつけるなど、Excel関数ではなかなか条件設定が難しい操作なども1ボタンでできるようになる。
(2)文字列型(String)は、数値計算には使えないので注意!
したがって、この変数を使って数値計算などをしようとするとエラーが起きてしまうので注意が必要だ。
company = company * 0.5
などと記述した場合
(3)文字列を連結したい場合は「&」を使うのが一般的
company = company & “様”
VBAでは、文字列どうしを連結したい場合には「&」を使用するのが一般的です。
(例)
- “クマリオ” & “様” →「クマリオ様」と連結される
- “山田” & “太郎” & “君” →「山田太郎君」と連結される
- company & “様” →「(変数companyのデータ)様」と連結される
“”(ダブルクォーテーション)を付けるときと、付けないときの違いは何?
・文字列を直接データとして打ち込むときは””で囲う。
・変数に格納しているデータを扱うときは、””が要らない。
もし、間違って変数名を””で囲ってしまうと、”company”という文字列データがそのまま打ち込まれたのと誤認されてしまうので注意が必要だ。
[※実は「&」でなく「+」でも文字列の連結は可能です]
実をいうと、文字列を連結するときに「&」ではなく「+」を使用しても可能です。
しかし、数値の計算のときの「+」と区別するために、文字列データであることを意識的に示すため、敢えて「&」を使用することを私は推奨しています。
(4)何でも入るよVariant(ヴァリアント)型!
先に言っておくが、Variant型は万能だ。どの型のデータでも出し入れできる。
じゃぁ、Variant型さえあれば、これまで気にしてきたデータの型なんて考えなくてもいいんじゃ…
だが、私はVariant型はあまり使わないことを推奨する。その理由は後で説明しよう。
それより先に、まずはとにかく使ってみることが先決だ!
[記述して実行してみましょう]
次のように記述してマクロを実行してみましょう。
[こんな結果になります]
このように実行時エラーとなりました。
ちょっと待って、エラーになったんだけど?
エラーになるだろう?
今回は、身をもってエラーを経験して欲しかったからそれでいい。
(5)何でも使えるからこそ注意したい!Variant型
エラーになった原因?
ううーーーーーーーーーーーーーーーーん、
うーーーーーん…
まぁいい、ヒントをあげよう。
[ここに注目]
x = 5
x = x & “です”
x = x * 2
…わからなかった。
上記の2行目と3行目がエラーの元だ。
①まず、1行目で
x = 5
変数xの中に「5」という数値が格納されました。
②次に、2行目で…
x = x & “です”
xに格納されている「5」と、文字列「です」が連結されて「5です」という文字列となってxに格納されました。
③さらに、3行目で…
x = x * 2
というように、xには既に「5です」という文字列データが入っているのに、「*2」と算術演算をしようとしたため、エラーの原因となったのです。
Variant型の変数は、どのデータ型も格納できるので便利なのだが、
自分がどういうデータを扱っているのか意識していないと、うっかりエラーの原因にしてしまいかねない。
何でも格納できるのと、どうにでも扱えるのとは違うってことね。
(ちっ せっかくVariant型さえあれば1つで楽できると思ったのに…)
そんな理由があって、私はVBA初心者の時期ほど、データの「型」を意識してほしいので、Variant型の変数はあまり推奨しない。もちろん、扱い方さえ心得ていれば便利な面もあるので、存在は覚えておいて損はないがな。
今回はここまで!
いかがだったでしょうか?
今回は以上です。
次回からは、
- 「VBA関数」を使ってみよう!
などを解説して参ります。
この連載のような内容を動画のコースでわかりやすく解説しています。
(ベネッセUdemyにて動画コースが●%オフ)
【好評につき、続編が出ました】
[脱・入門編]請求書を1クリックで作るマクロを作ろう
連載:
エクセルで始める!VBAプログラミング入門
(Excelの作業を自動化できる、プログラミング超入門講座)
【連載】
- 第0回 エクセルを自動化する、マクロVBAプログラミングとは?
- 第1回 超親切な機能「マクロの記録」でマクロを始めよう!
- 第2回?マクロの中身を解明!初めてのVBAに挑戦
- 第3回 基本のVBAを記述してみよう!
- 第4回 続・基本のVBAを記述してみよう!
- 第5回 「変数」入門!プログラミングの必修項目
- 第6回 もっと変数を使おう!String型とVariant型(この記事)
- 第7回 もっと便利な「VBA関数」を使おう!
とても分かりやすくて勉強になりました。
ありがとうございました。