【閲覧くださっている皆様へ】URLが変わりました。一部転送が完了していない内部リンク先があります。「404 Not Found お探しのページは見つかりませんでした。」という表示になる場合は、"https://bits-lifestyle.com/jigaku-study/●●"から、"https://study.bits-lifestyle.com/●●"へ書き換えてアクセスくださいますよう、お願いいたします。ご迷惑をおかけいたします。

 
スポンサーリンク

プログラミング初心者が練習しながら理解するエクセルマクロ①(変数について)

ExcelVBA(エクセルマクロ)

こんな方に書いた記事です。

  • プログラミングを勉強するのはマクロ(エクセルVBA)が初めて
  • 初級本を読んで途中からわからなくなった
  • ルーティン業務の時短が主な目的である

初級本を読んでいることが前提

初心者には下記のテキストがおすすめです。私はこれでスムーズに勉強を始められました。

でもやっぱり、私も途中からわからないことが出てきつつ、無理やり進めていました 。(それも大事なんですけどね)

変数の理解のしづらさと重要度

上記の本で勉強した時、私が始めにつまずいたのが「変数」です。

参考書等の表現も難しくてとっつきにくいので、プログラミング初心者だと最初は理解が大変なのではないでしょうか。

実はほかのプログラミング言語にも「変数」は必須なので、プログラミングをかじったことがある方なら当たり前の考え方かと思われます。

そして、実際マクロを書いていくときも、変数は便利です!変数なしだとかなりコードが長くなり面倒なことになるところ、変数を使うとすっきりします。下記を読んで使い方を理解していただければ幸いです。

変数って何?

変数といえば…
参考書等を読むと、 まず  Dim で「変数の宣言」 をするところから始まります。しかし私は最初、そもそも何を変数に置き換えたらよいかが分からりませんでした。

Dim 変数名 As

それは知ってる!どこにでも書いてある!でも使い方が分からないんだ!という方、おっしゃる通りです。(笑)

変数はよく、「データを入れる箱」「値を格納できる入れ物」に例えて説明されることが多いですが、私自身はこの説明がいまいちピンときませんでした・・・

自分なりに考えると、数学で勉強した「文字の式」に近いと感じています。例えば、下記の例を見てください。

① 10-(1+2×3-5)=8  
8÷(1+2×3-5)=4
n= 1+2×3-5
10-n=8
=4        

※数学ではあまりこんな書き方はしませんが、 分かりやすいようにあえて簡単な数字を使っているため、 ご了承ください。

上記で①と②はほぼ同じことです。①では 1+2×3-5 という式を2回書いていますが、②では「」という「文字」に置き換えて表現しています。

昔、初めて数学の文字列が出てきたときに、先生が「数学は楽するための学問だ」と言っていたのですが、プログラミングをやっているとそのことをよく思い出します。

同じことを何度も書いているのを短い文字で置き換えることにより、楽をするのです。それは変数も同じです。

「変数」とは、同じコードが何度も出てきて「めんどくさー」と思う時に、簡単な文字列で置き換えるためのものだと思ってください。
※正確な表現は、参考書等で調べてくださいね。

「何」を変数に置き換えるのか?クイズ形式で練習

とりあえず、「変数の宣言」とか「型」の話は置いておいて、「何を変数に置き換えたらよいのか」をまずは体感していただきたいと思います。

今日使う構文はこちら

Thisworkbook.sheets(1).Range(“A1”).Value=1

ちょっと長いですが、非常によく使うので覚えてしまいましょう。

要素の解説

Thisworkbook・・・このエクセルブック
sheets(1)・・・1番目のシート
Range(“A1”) ・・・A1セル
Value・・・値

ピリオド「.」は「~の」と訳します。

Thisworkbook.sheets(1).Range(“A1”).Value=1
このエクセルブック」の「1番目のシート」の「A1セル」の「」は1です。

練習問題

問題①次の日本語をコードに書き直しましょう。

「このエクセルブック」の「1番目のシート」の「A1セル」の「値」は1です。
「このエクセルブック」の「1番目のシート」の「A2セル」の「値」は2です。
「このエクセルブック」の「1番目のシート」の「A3セル」の「値」は3です。
答えをクリック
Thisworkbook.sheets(1).Range(“A1”).Value=1
Thisworkbook.sheets(1).Range(“A2”).Value=2
Thisworkbook.sheets(1).Range(“A3”).Value=3

簡単だけど、面倒くさい!と思ったあなたは上達が早いです。

問題②下記コードの共通部分はどこですか。

Thisworkbook.sheets(1).Range(“A1”).Value=1
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

答えをクリック
答えはa,b,dです。cはRange(“A1”)のA1の部分がA2,A3と変化しているので3つの文で異なります。

ちなみに a,b,d の中だと、一般的にはbの Thisworkbook.sheets(1) を変数に置き換えます。一番長いコードを置き換えたほうが楽なので。

また、複数の箇所で変数を使うことも可能ですが、使いすぎに注意。使いすぎると変数の元のコードが何だったのか、わからなくなりますので、厳選して使いたいものです。

問題③下記コードの共通部分を文字列「hensu」に置き換えてください。

Thisworkbook.sheets(1).Range(“A1”).Value=1
Thisworkbook.sheets(1).Range(“A2”).Value=2
Thisworkbook.sheets(1).Range(“A3”).Value=3
答えをクリック
hensu.Range(“A1”).Value=1
hensu.Range(“A2”).Value=2
hensu.Range(“A3”).Value=3

簡単すぎていたらすみません。

問題④下記コードの共通部分を文字列「hensu」に置き換えてください。

問題③の類題です。 もうわかった方は飛ばしてください。

Thisworkbook.sheets(1).Range(“A1”).Value + Thisworkbook.sheets(1).Range(“A2”).Value = Thisworkbook.sheets(1).Range(“A3”).Value
答えをクリック
hensu.Range(“A1”).Value+hensu.Range(“A2”).Value=
hensu.Range(“A3”).Value

えー、あんまり短くならないじゃん。。(笑)

ちなみに、このValueは省略しても大丈夫です。(わざわざ書かなくてもデフォルトが値なので)

では、hensuは?これは、「with」を使ってまとめることができます。その練習は別の機会にやりましょう。

問題⑤下記コードの共通部分を文字列「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

しらないコードの意味については今は無視して構いません。

答えをクリック
hensu.Select
hensu.Font.Fontsize=16
hensu..ColorIndex=3

共通部分のThisworkbook.sheets(1).Range(“B2:C3”)をhensuに変えただけでOK。だいぶ短くなりましたね。

まとめ

変数の置き方は1つではありませんので、参考書の通りにならなくてもあまり気にしなくてよいです。ピンとこなければ、まずは変数に置き換えないで全部コードを書いてみてください。その中で、何度も重複したコードを変数に置き換えると良いと思います。

ところで、実際に書くときは、まず「変数の宣言」をします。そうすると今度は。「型」って何?となるわけです。それは次の記事で。

コメント

WP Twitter Auto Publish Powered By : XYZScripts.com
タイトルとURLをコピーしました