こんな方に書いた記事です。
- プログラミングを勉強するのはマクロ(エクセルVBA)が初めて
- 初級本を読んで途中からわからなくなった
- まずはルーティン業務の時短が主な目的である(本格プログラミングというよりは、ざっくりと理解しすぐ使いたい)
「プログラミング初心者が練習しながら理解するエクセルマクロ」を初めて読まれる方はこちら
型ってどういうもの?
マクロ本には、変数を使う時は、
「Dim 変数 as 型」という宣言をしなさいと書いてあります。でも型って何よー。
一番近いのは・・・
Excelシートのこれって見覚えありますか?
詳しくはこちらに書きました
例えば、同じ「=2+3」をセルに入力しても、表示形式が「数値」なら計算できるけれど、「文字列」はただの表示なので計算結果は出てこないですね。
変数を使う時は、同じように「型」を明確に宣言します。
変数の宣言や型って必要なの?
はい、ごめんなさい。私はあまりよく考えずに、本やサイトで「変数の宣言はした方が良い」と書いてあったので素直に従いました。(笑)
私は VBEにて「自動的にOption Explicitが記述される」 オプションにチェックを入れているので、毎回自動で 「Option Explicit 」という文言が記載され、変数があるときに変数の宣言をしないと、エラーになります。
それで改めて調べました。すると私のお世話になっている「Office Tanaka」の記事に下記のようなものがありました。
型はなくても大丈夫だけど、変数の宣言はしないと後が大変。ということですね。(型無しの「Dim 変数」でも成立。)
そういえば、私が躓いていたのも「型」を何にするかいつも迷っているということでした。(毎回一生懸命調べていたのです)
とりあえず、型についてはよくわからなければ一旦後回しにしてもよいと思います。後回しにする方は下記は飛ばしてくださーい。後々必要になったらまたここに戻ってきてくださればと思います。
一方、でもやっぱり 「Dim 変数」は正式でなさそうだし、このままだと後々困るんでしょ。とりあえず勉強しておきたいという方は下にお進みください。
型の種類
型は奥が深いですが、まずは普段の事務作業でよく出てくる型を使えるようにしておきましょう。
Workbook、Worksheet,Rangeなど
そのままです。これらの「オブジェクト」を変数にするときに使います。
Long:整数
個数、人数、金額など、整数の計算などをするときは、こちらの型をつかいます。
Integer は、桁数が少ない時だけしか使えないので。
改めてしらべてみたところ、処理速度的にも 「Integer」 を使う意味はないそうです。。。
詳しくはこちらに書いてありました
Date:日付
日付には色々な表示形式がありますが、型についてはこれ1種類です。
String:文字列
上記以外なら、とりあえずStringとしてしまいましょう。(問題があればエラーが出るはず)
変数の宣言・指定の仕方
数学の証明で、最初に「nは整数とおく」と宣言しますよね。それと同じことだとお考えください。
多くのプログラミング言語では、変数の宣言が必要なので、他のプログラミング言語を学習する予定のある方は、癖づけておくと良いです。(「型」の重要度合いは言語によりけり)
そもそも何を変数とおくのか
分からなければ、変数を置かずに、まず処理についてのコードを書いていき、何度も同じコードを使うなあという時が出てきたら、それを変数で置いていきましょう。変数の置き方については、前回の記事をご参考に。
変数の命名の仕方
変数を日本語で命名することも可能です。その方が分かりやすいかもしれません。
Dim 社員リストシート1 As String
しかし、書いているうちに「日本語⇔英数字」の切り替えが面倒くさくなり、変数も英数字で命名するようになりました。いろいろなサイトを見ても日本語で命名している方はほとんどいないようです。
Dim sht_lst1 As String
明確な決まりはありませんので、逆に迷うところです。
大切なのは、あとで見ても分かりやすい点です。職場で使う場合はそのルールに合わせるようにします。
1人で使うときは自分がわかればよいですが、一般的な省略方法は知っておいて損はないです。今回は 私の書き方を説明します。
- 英単語を子音だけにして短縮。
※上記の例であれば、sheet→sht list→lstと省略。 - 小文字にする。(ぱっと見ですぐ変数とわかるため)
- オブジェクト_オブジェクトの名前 の順で
オブジェクトとは、Workbook,sheet,cellなどのことです。
オブジェクトがない時は、省略。(例 Dim n As String)
コードを書く順番
Sub 処理A()
Dim sht_lst1 as String '①変数の宣言 「Dim 変数 as 型」
Set sht_lst1 =Thisworkbook.Worksheet("社員リストシート1") '②変数の指定
'③処理を書く
②について、 オブジェクト(Workbook,sheet,cellなど)の時はSetを使って指定します。オブジェクトでなく、単なる数値や文字列を変数にする際は「=」で結ぶだけでよいです。
変数の宣言:構文の練習
練習① 前回書いた下記のコードについて、共通部分を変数に書き換え、変数を宣言してください。
Thisworkbook.sheets(1).Range(“A2”).Value=2
Thisworkbook.sheets(1).Range(“A3”).Value=3
練習② 下記のコードについて、共通部分を変数に書き換え、変数を宣言してください。
①の類題です。
Thisworkbook.sheets(1).Range(“B2:C3”).Font.Fontsize=16
Thisworkbook.sheets(1).Range(“B2:C3”).ColorIndex=3
練習③ 下記のコードについて、共通部分を変数に書き換え、変数を宣言してください。
類題ですが、ややこしいので注意。
Thisworkbook.sheets(Thisworkbook.Worksheets.Count).Range(“B2”)=16
Thisworkbook.sheets(Thisworkbook.Worksheets.Count).Range(“B2”).ColorIndex=3
※Thisworkbook.Worksheets.Count :このワークブックのシート数の合計
変数について、ぼんやりとでも、わかってきていただけたら嬉しいです。
コメント