こんな方に書いた記事です。
- プログラミングを勉強するのはマクロ(エクセルVBA)が初めて
- 初級本を読んで途中からわからなくなった
- ルーティン業務の時短が主な目的である
初級本を読んでいることが前提
初心者には下記のテキストがおすすめです。私はこれでスムーズに勉強を始められました。
でもやっぱり、私も途中からわからないことが出てきつつ、無理やり進めていました 。(それも大事なんですけどね)
変数の理解のしづらさと重要度
上記の本で勉強した時、私が始めにつまずいたのが「変数」です。
参考書等の表現も難しくてとっつきにくいので、プログラミング初心者だと最初は理解が大変なのではないでしょうか。
実はほかのプログラミング言語にも「変数」は必須なので、プログラミングをかじったことがある方なら当たり前の考え方かと思われます。
そして、実際マクロを書いていくときも、変数は便利です!変数なしだとかなりコードが長くなり面倒なことになるところ、変数を使うとすっきりします。下記を読んで使い方を理解していただければ幸いです。
変数って何?
変数といえば…
参考書等を読むと、 まず Dim で「変数の宣言」 をするところから始まります。しかし私は最初、そもそも何を変数に置き換えたらよいかが分からりませんでした。
Dim 変数名 As 型
それは知ってる!どこにでも書いてある!でも使い方が分からないんだ!という方、おっしゃる通りです。(笑)
変数はよく、「データを入れる箱」「値を格納できる入れ物」に例えて説明されることが多いですが、私自身はこの説明がいまいちピンときませんでした・・・
自分なりに考えると、数学で勉強した「文字の式」に近いと感じています。例えば、下記の例を見てください。
① 10-(1+2×3-5)=8
8÷(1+2×3-5)=4
②n= 1+2×3-5
10-n=8
8÷n=4
※数学ではあまりこんな書き方はしませんが、 分かりやすいようにあえて簡単な数字を使っているため、 ご了承ください。
上記で①と②はほぼ同じことです。①では 1+2×3-5 という式を2回書いていますが、②では「n」という「文字」に置き換えて表現しています。
昔、初めて数学の文字列が出てきたときに、先生が「数学は楽するための学問だ」と言っていたのですが、プログラミングをやっているとそのことをよく思い出します。
同じことを何度も書いているのを短い文字で置き換えることにより、楽をするのです。それは変数も同じです。
※正確な表現は、参考書等で調べてくださいね。
「何」を変数に置き換えるのか?クイズ形式で練習
とりあえず、「変数の宣言」とか「型」の話は置いておいて、「何を変数に置き換えたらよいのか」をまずは体感していただきたいと思います。
今日使う構文はこちら
ちょっと長いですが、非常によく使うので覚えてしまいましょう。
要素の解説
Thisworkbook・・・このエクセルブック
sheets(1)・・・1番目のシート
Range(“A1”) ・・・A1セル
Value・・・値
ピリオド「.」は「~の」と訳します。
Thisworkbook.sheets(1).Range(“A1”).Value=1
「このエクセルブック」の「1番目のシート」の「A1セル」の「値」は1です。
練習問題
問題①次の日本語をコードに書き直しましょう。
「このエクセルブック」の「1番目のシート」の「A2セル」の「値」は2です。
「このエクセルブック」の「1番目のシート」の「A3セル」の「値」は3です。
問題②下記コードの共通部分はどこですか。
Thisworkbook.sheets(1).Range(“A2”).Value=2
Thisworkbook.sheets(1).Range(“A3”).Value=3
①で作成したコードですね。これをもっとすっきりまとめたいのでまず共通部分を探しましょう。下記のa,b,c,dから選んでください。
a, Thisworkbook
b, Thisworkbook.sheets(1)
c, Thisworkbook.sheets(1).Range(“A1”)
d, Value
問題③下記コードの共通部分を文字列「hensu」に置き換えてください。
Thisworkbook.sheets(1).Range(“A2”).Value=2
Thisworkbook.sheets(1).Range(“A3”).Value=3
問題④下記コードの共通部分を文字列「hensu」に置き換えてください。
問題③の類題です。 もうわかった方は飛ばしてください。
問題⑤下記コードの共通部分を文字列「hensu」に置き換えてください。
またまた類題ですがコードを少し変えてます。もうわかった方は飛ばしてください。
Thisworkbook.sheets(1).Range(“B2:C3”).Select
Thisworkbook.sheets(1).Range(“B2:C3”).Font.Fontsize=16
Thisworkbook.sheets(1).Range(“B2:C3”).ColorIndex=3
しらないコードの意味については今は無視して構いません。
まとめ
変数の置き方は1つではありませんので、参考書の通りにならなくてもあまり気にしなくてよいです。ピンとこなければ、まずは変数に置き換えないで全部コードを書いてみてください。その中で、何度も重複したコードを変数に置き換えると良いと思います。
ところで、実際に書くときは、まず「変数の宣言」をします。そうすると今度は。「型」って何?となるわけです。それは次の記事で。
コメント