4、VBAによるマクロの作成(基礎編)
4−2、変数
変数とは
「変数」とは、ある文字列や数値を格納する箱のようなもので、ここに入れた値はセルに代入したり、計算に利用したりできます。
その箱の名前となる「変数名」は次の決まりにさえ従えば、自由にきめることができます。
- 名前の一番最初は文字であること。
- 使用できる文字はアルファベット、ひらがな、カタカナ、漢字、数字。
- 使用できない文字はスペース、@、!、#、”、$、&、ピリオドなど。
- 文字数は半角255文字以内。全角文字は2文字と数えます。
- アルファベットの大文字、小文字の区別はなし。
- VBAが命令に使う単語(予約語)は使えません。
変数の型
変数には型という定義があって格納するものによって設定します。この型を設定することを変数の型を宣言するといいます。
格納する値と型の関係は以下の通りです。
型名 | データ | 具体的な値 |
Byte | バイト型 | 0〜225 |
Boolean | ブール型 | 真(True)または偽(False) |
Integer | 整数型 | -32768〜32767 |
Long | 長整数型 | -2147483648〜2147483647 |
Single | 単精度浮動小数点型 | -3.402823E38〜-1.401298E-45 1.401298E-45〜3.402823E38 |
Double | 倍精度浮動小数点型 | -1.79769313486232E308〜 -4.94065645841247E-324 4.94065645841247E-324〜 1.79769313486232E308 |
Currency | 通貨型 | -922337203685477.5808〜 922337203685477.5807 |
Date | 日付型 | 100年1月1日〜9999年12月31日 |
Object | オブジェクト型 | オブジェクトの参照値 |
String | 文字列型 | 0〜2GBの文字列 |
Variant | バリアント型 | 数値、文字、日付けなど任意 |
変数の宣言
例えば「Moji」という変数を作り、それを文字列用に宣言する場合は以下のように記述します。
Dim Moji As String
変数「Moji」を文字列(String)に設定するという意味です。
そしてこの宣言を記述する場所はその変数が最初にでてくるところより前にあればいいです。また、その変数を複数のマクロで使用する場合は、マクロの外で宣言します。(具体例は下記)※変数を宣言しない場合は、自動的に「バリアント型」として扱われます。
変数の宣言と格納(代入)
※「Example1」の続きになっていますので、あらかじめ「Example1」を実行しておくことをおすすめします。
例2)
変数「Moji」を文字列型、「Goukei」を整数型に宣言し、「Moji」には「合計」を、「Goukei」には国語、数学、英語の合計点を格納します。
次に「Sheet1」のE1に変数「Moji」を、E2に変数「Goukei」をそれぞれ入力します。Sub Example2()
Dim Moji As String
Dim Goukei As Integer
Moji = "合計"
Goukei = 69+94+42
Worksheets("Sheet1").Select
Range("E1") = Moji
Range("E2") = Goukei
End Sub記述後、「マクロの実行」から「Example2」を実行してください。
【このコードの解説】
- 変数「Moji」、「Goukei」を宣言します。宣言はこの例のようにマクロの早い段階で宣言するのがいいでしょう。
- 変数へ文字を格納(代入)するには、前のページで説明したセルへの入力と同じようにイコール「=」を使います。
やはり格納先の変数を左辺、格納する値を右辺に記述します。学校で習った算数や数学の書き方とは逆ですね。
上の例ではMoji = "合計"
Goukei = 69+94+42の部分で「Moji」には「合計」という文字が、「Goukei」には69+94+42の計算結果「205」がそれぞれ格納されます。
- この段階で「Moji」には「合計」、「Goukei」には「205」が入っているわけなので、
Range("E1") = Moji
Range("E2") = Goukeiを実行すれば、それぞれE1、E2に「合計」と「205」が出力されるわけです。
+α講座
変数の宣言について、「複数のマクロで使用する場合は、マクロの外で宣言します」と前述しましたが、具体的には以下のように記述します。
Dim Moji As String
Dim Goukei As Integer
Sub Example2()
Moji = "合計"
Goukei = 69+94+42
Worksheets("Sheet1").Select
Range("E1") = Moji
Range("E2") = Goukei
End Subこのように記述すれば変数「Moji」と「Goukei」はマクロ「Example2」以外のマクロの中にも使うことができるようになります。(ただし、複数の「モジュールシート」にまたがって使うことはできません。)